Zendesk

Customer service and support platform

developer.zendesk.com/api-reference ↗
Version
2.0.0
OpenAPI
3.0.3
Endpoints
440
Schemas
454
Updated
3 days ago
Customer support customer-support helpdesk tickets
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://{subdomain}.{domain}.com

Authentication

basic

Endpoints

Account settings 2 endpoints

GET /api/v2/account/settings

Shows the settings that are available for the account. #### Allowed For * Agents

operationId: AccountSettings_get

Responses

200 Success response
GET /api/v2/account/settings
PUT /api/v2/account/settings

Updates settings for the account. See [JSON Format](https://developer.zendesk.com) above for the settings you can update. #### Allowed For * Admins

operationId: AccountSettings_updateSettings

Responses

200 Success response
PUT /api/v2/account/settings

Activity stream 3 endpoints

GET /api/v2/activities

Lists ticket activities in the last 30 days affecting the agent making the request. Also sideloads the following arrays of user records: - actors - All actors involved in the listed activities - users - All users involved in the listed activities #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents

operationId: ActivityStream_listActivities

Responses

200 Success response
GET /api/v2/activities
GET /api/v2/activities/count

Returns an approximate count of ticket activities in the last 30 days affecting the agent making the request. If the count exceeds 100,000, the count will return a cached result. This cached result will update every 24 hours. The `count[refreshed_at]` property is a timestamp that indicates when the count was last updated. **Note**: When the count exceeds 100,000, `count[refreshed_at]` may occasionally be null. This indicates that the count is being updated in the background, and `count[value]` is limited to 100,000 until the update is complete. #### Allowed For * Agents

operationId: ActivityStream_getAgentActivitiesCount

Responses

200 Count of ticket activities
GET /api/v2/activities/count
GET /api/v2/activities/{activity_id}

Lists a specific activity. #### Allowed For * Agents

operationId: ActivityStream_showSpecificActivity

Responses

200 Success response
GET /api/v2/activities/{activity_id}

Assigneefieldassignableagents 2 endpoints

GET /api/lotus/assignables/groups.json

List assignable groups on the AssigneeField #### Allowed For * Agents

operationId: AssigneeFieldAssignableAgents_listGroups

Responses

200 Success response
GET /api/lotus/assignables/groups.json
GET /api/lotus/assignables/groups/{group_id}/agents.json

List assignable agents from a group on the AssigneeField #### Allowed For * Agents

operationId: AssigneeFieldAssignableAgents_listFromGroup

Parameters

Name In Required Type Description
optional

Responses

200 Success response
GET /api/lotus/assignables/groups/{group_id}/agents.json

Assigneefieldassignablegroups 1 endpoints

GET /api/lotus/assignables/autocomplete.json

List assignable groups and agents based on query matched against name #### Allowed For * Agents

operationId: AssigneeFieldAssignableGroups_listMatching

Parameters

Name In Required Type Description
optional

Responses

200 Success response
GET /api/lotus/assignables/autocomplete.json

Attachments 5 endpoints

GET /api/v2/attachments/{attachment_id}

Shows attachment details. You can get the value of the `attachment_id` parameter by listing the ticket's comments. See [List Comments](/api-reference/ticketing/tickets/ticket_comments/#list-comments). Each comment in the list has an `attachments` list that specifies an `id` for each attachment. #### Allowed for * Agents

operationId: Attachments_showDetails

Parameters

Name In Required Type Description
optional

Responses

200 Success Response
GET /api/v2/attachments/{attachment_id}
PUT /api/v2/attachments/{attachment_id}

Toggles enabling or restricting agent access to attachments with detected malware. #### Allowed For * Admins

operationId: Attachments_updateMalwareAttachment

Parameters

Name In Required Type Description
optional

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/AttachmentUpdateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/AttachmentUpdateRequestExample"
        }
      }
    }
  }
}

Responses

200 Success response
PUT /api/v2/attachments/{attachment_id}
PUT /api/v2/tickets/{ticket_id}/comments/{comment_id}/attachments/{attachment_id}/redact

Redaction allows you to permanently remove attachments from an existing comment on a ticket. Once removed from a comment, the attachment is replaced with an empty "redacted.txt" file. The redaction is permanent. It is not possible to undo redaction or see what was removed. Once a ticket is closed, redacting its attachments is no longer possible. Also, if you want to redact an inline attachment, you can use the `include_inline_images` parameter in the [List Comments](/api-reference/ticketing/tickets/ticket_comments/#list-comments) operation to obtain the inline attachment ID, and use it in the request URL. #### Allowed For * Admins * Agents when [deleting tickets is enabled for agents on professional accounts](https://support.zendesk.com/hc/en-us/articles/360002128107) * Agents assigned to a custom role with permissions to redact ticket content (Enterprise only)

operationId: Attachments_redactCommentAttachment

Responses

200 OK response
PUT /api/v2/tickets/{ticket_id}/comments/{comment_id}/attachments/{attachment_id}/redact
POST /api/v2/uploads

Uploads a file that can be attached to a ticket comment. It doesn't attach the file to the comment. For details and examples, see [Attaching ticket comments with the API](https://developer.zendesk.com). The endpoint has a required `filename` query parameter. The parameter specifies what the file will be named when attached to the ticket comment (to give the agent more context about the file). The parameter does not specify the file on the local system to be uploaded. While the two names can be different, their file extensions must be the same. If they don't match, the agent's browser or file reader could give an error when attempting to open the attachment. The `Content-Type` header must contain a recognized MIME type that correctly describes the type of the uploaded file. Failing to send a recognized, correct type may cause undesired behavior. For example, in-browser audio playback may be interrupted by the browser's security mechanisms for MP3s uploaded with an incorrect type. Adding multiple files to the same upload is handled by splitting requests and passing the API token received from the first request to each subsequent request. The token is valid for 3 days. **Note**: Even if [private attachments](https://support.zendesk.com/hc/en-us/articles/204265396) are enabled in the Zendesk Support instance, uploaded files are visible to any authenticated user at the `content_URL` specified in the [JSON response](https://developer.zendesk.com) until the upload token is consumed. Once a file is associated with a ticket or post, visibility is restricted to users with access to the ticket or post with the attachment. #### Allowed For * End users

operationId: Attachments_uploadFile

Responses

201 Created response
POST /api/v2/uploads
DELETE /api/v2/uploads/{token}

#### Allowed for * End Users

operationId: Attachments_deleteUpload

Parameters

Name In Required Type Description
token path required string The token of the uploaded attachment

Responses

204 No Content response
DELETE /api/v2/uploads/{token}

Audit logs 3 endpoints

GET /api/v2/audit_logs

#### Allowed For * Admins on accounts that have audit log access #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page.

operationId: AuditLogs_list

Parameters

Name In Required Type Description
filter[source_type] query optional string Filter audit logs by the source type. For example, user or rule
filter[source_id] query optional integer Filter audit logs by the source id. Requires `filter[source_type]` to also be set
filter[actor_id] query optional integer Filter audit logs by the actor id
filter[ip_address] query optional string Filter audit logs by the ip address
filter[created_at] query optional string Filter audit logs by the time of creation. When used, you must specify `filter[created_at]` twice in your request, first with the start time and again with an end time
filter[action] query optional string Filter audit logs by the action
sort_by query optional string Offset pagination only. Sort audit logs. Default is `sort_by=created_at`
sort_order query optional string Offset pagination only. Sort audit logs. Default is `sort_order=desc`
sort query optional string Cursor pagination only. Sort audit logs. Default is `sort=-created_at`

Responses

200 Success response
GET /api/v2/audit_logs
POST /api/v2/audit_logs/export

#### Allowed For * Admins on accounts that have audit log access

operationId: AuditLogs_exportLogs

Parameters

Name In Required Type Description
filter[source_type] query optional string Filter audit logs by the source type. For example, user or rule
filter[source_id] query optional integer Filter audit logs by the source id. Requires `filter[source_type]` to also be set.
filter[actor_id] query optional integer Filter audit logs by the actor id
filter[ip_address] query optional string Filter audit logs by the ip address
filter[created_at] query optional string Filter audit logs by the time of creation. When used, you must specify `filter[created_at]` twice in your request, first with the start time and again with an end time
filter[action] query optional string Filter audit logs by the action

Responses

202 Accepted description
POST /api/v2/audit_logs/export
GET /api/v2/audit_logs/{audit_log_id}

#### Allowed For * Admins on accounts that have audit-log access

operationId: AuditLogs_showLogById

Responses

200 Success response
GET /api/v2/audit_logs/{audit_log_id}

Automations 9 endpoints

GET /api/v2/automations

Lists all automations for the current account. #### Allowed For * Agents #### Available Parameters You can pass in any combination of the following optional filters: | Name | Type | Comment | ---------- | ------- | ------- | active | boolean | Only active automations if true, inactive automations if false | sort_by | string | Possible values are "alphabetical", "created_at", "updated_at", "usage_1h", "usage_24h", or "usage_7d". Defaults to "position" | sort_order | string | One of "asc" or "desc". Defaults to "asc" for alphabetical and position sort, "desc" for all others #### Sideloads The following sideloads are supported. The usage sideloads are only supported on the Support Professional or Suite Growth plan or above. | Name | Will sideload | ---------------- | ------------- | app_installation | The app installation that requires each automation, if present | permissions | The permissions for each automation | usage_1h | The number of times each automation has been used in the past hour | usage_24h | The number of times each automation has been used in the past day | usage_7d | The number of times each automation has been used in the past week | usage_30d | The number of times each automation has been used in the past thirty days #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page.

operationId: Automations_list

Responses

200 Success response
GET /api/v2/automations
POST /api/v2/automations

Creates an automation. New automations must be unique and have at least one condition that is true only once or an action that nullifies at least one of the conditions. Active automations can have overlapping conditions but can't be identical. The request must include the following conditions in the `all` array: - At least one time-based condition - At least one condition that checks one of the following fields: `status`, `type`, `group_id`, `assignee_id`, or `requester_id`. #### Allowed For * Agents

operationId: Automations_createNewAutomation

Responses

201 Created response
POST /api/v2/automations
GET /api/v2/automations/active

Lists all active automations. #### Allowed For * Agents #### Available Parameters You can pass in any combination of the following optional filters: | Name | Type | Comment | ---------- | ------ | ------- | sort_by | string | Possible values are "alphabetical", "created_at", "updated_at", "usage_1h", "usage_24h", or "usage_7d". Defaults to "position" | sort_order | string | One of "asc" or "desc". Defaults to "asc" for alphabetical and position sort, "desc" for all others #### Sideloads The following sideloads are supported: | Name | Will sideload | ---------------- | ------------- | app_installation | The app installation that requires each automation, if present | permissions | The permissions for each automation | usage_1h | The number of times each automation has been used in the past hour | usage_24h | The number of times each automation has been used in the past day | usage_7d | The number of times each automation has been used in the past week | usage_30d | The number of times each automation has been used in the past thirty days

operationId: Automations_listActive

Responses

200 Success response
GET /api/v2/automations/active
DELETE /api/v2/automations/destroy_many

Deletes the automations corresponding to the provided comma-separated list of IDs. **Note**: You might be restricted from deleting some default automations. If included in a bulk deletion, the unrestricted automations will be deleted. #### Allowed For * Agents #### Request Parameters The DELETE request takes one parameter, an `ids` object that lists the automations to delete. | Name | Description | ---- | ----------- | ids | The IDs of the automations to delete #### Example request ```js { "ids": "25,23,27,22" } ```

operationId: Automations_bulkDelete

Parameters

Name In Required Type Description
ids query optional array The IDs of the automations to delete

Responses

204 No Content response
DELETE /api/v2/automations/destroy_many
GET /api/v2/automations/search

#### Pagination * Offset pagination only See [Using Offset Pagination](/api-reference/ticketing/introduction/#using-offset-pagination). #### Allowed For * Agents #### Sideloads The following sideloads are supported. For more information, see [Side-loading](https://developer.zendesk.com). | Name | Will sideload | ---------------- | ------------- | app_installation | The app installation that requires each automation, if present | permissions | The permissions for each automation | usage_1h | The number of times each automation has been used in the past hour | usage_24h | The number of times each automation has been used in the past day | usage_7d | The number of times each automation has been used in the past week | usage_30d | The number of times each automation has been used in the past thirty days

operationId: Automations_search

Responses

200 Success response
GET /api/v2/automations/search
PUT /api/v2/automations/update_many

**Note**: You might be restricted from updating some default automations. If included in a bulk update, the unrestricted automations will be updated. #### Allowed For * Agents #### Request Parameters The PUT request expects an `automations` object that lists the automations to update. Each automation may have the following properties: | Name | Mandatory | Description | -------- | --------- | ----------- | id | yes | The ID of the automation to update | position | no | The new position of the automation | active | no | The active status of the automation (true or false) #### Example Request ```js { "automations": [ {"id": 25, "position": 3}, {"id": 23, "position": 5}, {"id": 27, "position": 9}, {"id": 22, "position": 7} ] } ```

operationId: Automations_updateMany

Responses

200 Success response
PUT /api/v2/automations/update_many
DELETE /api/v2/automations/{automation_id}

**Note**: You might be restricted from deleting some default automations. #### Allowed For * Agents

operationId: Automations_deleteAutomation

Responses

204 No Content response
DELETE /api/v2/automations/{automation_id}
GET /api/v2/automations/{automation_id}

#### Allowed For * Agents

operationId: Automations_show

Responses

200 Success response
GET /api/v2/automations/{automation_id}
PUT /api/v2/automations/{automation_id}

Updates an automation. Updated automations must be unique and have at least one condition that is true only once or an action that nullifies at least one of the conditions. Active automations can have overlapping conditions but can't be identical. The request must include the following conditions in the `all` array: - At least one time-based condition - At least one condition that checks one of the following fields: 'status', 'type', 'group_id', 'assignee_id', or 'requester_id' **Note**: Updating a condition or action updates both the `conditions` and `actions` arrays, clearing all existing values of both arrays. Include all your conditions and actions when updating any condition or action. **Note**: You might be restricted from updating some default automations. #### Allowed For * Agents

operationId: Automations_updateAutomation

Responses

200 Success response
PUT /api/v2/automations/{automation_id}

Basics 3 endpoints

POST /api/v2/channels/voice/agents/{agent_id}/tickets/{ticket_id}/display

Allows you to instruct an agent's browser to open a ticket. When the message is successfully delivered to an agent's browser: ```http Status: 200 OK ``` When `agent_id` or `ticket_id` is invalid: ```http Status: 404 Not Found ``` #### Allowed For * Agents

operationId: Basics_openAgentTicketDisplay

Parameters

Name In Required Type Description
optional
optional

Responses

200 Successful response
404 When the `agent_id` or `ticket_id` is invalid
POST /api/v2/channels/voice/agents/{agent_id}/tickets/{ticket_id}/display
POST /api/v2/channels/voice/agents/{agent_id}/users/{user_id}/display

Allows you to instruct an agent's browser to open a user's profile. When the message is successfully delivered to an agent's browser: ```http Status: 200 OK ``` When `agent_id` or `user_id` is invalid: ```http Status: 404 Not Found ``` #### Allowed For * Agents

operationId: Basics_openUserProfile

Parameters

Name In Required Type Description
optional
optional

Responses

200 Successful response
404 When the `agent_id` or `user_id` is invalid
POST /api/v2/channels/voice/agents/{agent_id}/users/{user_id}/display
POST /api/v2/channels/voice/tickets

#### Allowed For * Agents ### Creating tickets #### Introduction Creating tickets using Talk Partner Edition follows the same conventions as the Create Ticket endpoint. See [Create Ticket](/api-reference/ticketing/tickets/tickets/#create-ticket). #### Request parameters The POST request takes a mandatory `ticket` object that lists the values to set when the ticket is created. You may also include an optional `display_to_agent` value such as the ID of the agent that will see the newly created ticket. Tickets created using this endpoint must have a `via_id` parameter. See the following section for possible values. #### Zendesk Talk Integration Via IDs Tickets created using this endpoint must have one of the following `via_id` parameters: | ID | Description | ---------| ------------- | 44 | Voicemail | 45 | Phone call (inbound) | 46 | Phone call (outbound) ### Creating voicemail tickets #### Request parameters The POST request takes a mandatory `ticket` object that lists the values to set when the ticket is created. The ticket must have a `voice_comment` with the following values: | Name | Type | Comment | ------------------ | ----------------------| ------- | from | string | Incoming phone number | to | string | Dialed phone number | recording_url | string | URL of the recording | started_at | date | [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) timestamp of the call starting time | call_duration | integer | Duration in seconds of the call | answered_by_id | integer | The agent who answered the call | transcription_text | string | Transcription of the call (optional) | location | string | Location of the caller (optional)

operationId: Basics_createVoiceTicket

Parameters

Name In Required Type Description
optional
optional

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TicketCreateVoicemailTicketRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/TicketCreateTicketViaTalkRequestExample"
        }
      }
    }
  }
}

Responses

201 Successful response
404 When the `agent_id` or `ticket_id` is invalid
POST /api/v2/channels/voice/tickets

Bookmarks 3 endpoints

GET /api/v2/bookmarks

#### Allowed For - Agents

operationId: Bookmarks_list

Responses

200 Successful response
GET /api/v2/bookmarks
POST /api/v2/bookmarks

#### Allowed For - Agents

operationId: Bookmarks_createNewBookmark

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/BookmarkCreateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/BookmarkCreateRequest"
        }
      }
    }
  }
}

Responses

200 Successfully created
201 Successfully created
POST /api/v2/bookmarks
DELETE /api/v2/bookmarks/{bookmark_id}

#### Allowed For - Agents (own bookmarks only) If the bookmark already exists with a specified ticket id, the response status will be `http Status: 200 OK`.

operationId: Bookmarks_deleteBookmarkById

Responses

204 No content
DELETE /api/v2/bookmarks/{bookmark_id}

Brands 7 endpoints

GET /api/v2/brands

Returns a list of all brands for your account sorted by name. #### Allowed for * Admins, Agents #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com).

operationId: Brands_getAll

Responses

200 Successful response
GET /api/v2/brands
POST /api/v2/brands

#### Allowed for - Admins

operationId: Brands_createNewBrand

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/BrandCreateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/BrandCreateRequestExample"
        }
      }
    }
  }
}

Responses

201 Successful response
POST /api/v2/brands
GET /api/v2/brands/check_host_mapping

Returns a JSON object determining whether a host mapping is valid for a given subdomain. #### Allowed for * Admins

operationId: Brands_checkHostMappingValidity

Parameters

Name In Required Type Description
optional
optional

Responses

200 Successful response
GET /api/v2/brands/check_host_mapping
DELETE /api/v2/brands/{brand_id}

Deletes a brand. #### Allowed for - Admins

operationId: Brands_deleteBrand

Parameters

Name In Required Type Description
optional

Responses

204 No Content response
DELETE /api/v2/brands/{brand_id}
GET /api/v2/brands/{brand_id}

Returns a brand for your account. #### Allowed for * Admins, Agents

operationId: Brands_showBrand

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
GET /api/v2/brands/{brand_id}
PUT /api/v2/brands/{brand_id}

Returns an updated brand. #### Allowed for * Admins #### Updating a Brand's Image A brand image can be updated by uploading a local file using the update brand endpoint. See the **Using curl** sections below for more information.

operationId: Brands_updateBrand

Parameters

Name In Required Type Description
optional

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/BrandUpdateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/BrandUpdateRequestExample"
        }
      }
    }
  }
}

Responses

200 Successful response
PUT /api/v2/brands/{brand_id}
GET /api/v2/brands/{brand_id}/check_host_mapping

Returns a JSON object determining whether a host mapping is valid for the given brand. #### Allowed for - Admins

operationId: Brands_checkHostMappingValidity

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
GET /api/v2/brands/{brand_id}/check_host_mapping

Channel framework 3 endpoints

POST /api/v2/any_channel/channelback/report_error

#### Allowed For * Admins #### Request parameters The POST request takes a JSON object parameter which contains information about the problematic [channelback](https://developer.zendesk.com). | Name | Type | Required | Comments | ------------------ | ----------| --------- | ------------------- | instance_push_id | string | yes | The ID of the account to which data will be pushed. This was passed to the integration service when the administrator set up the account | external_id | string | yes | Unique identifier of the external resource from the original channelback (string) | description | string | no | A human readable description of the error | request_id | string | no | A unique identifier for the request #### Response format The response does not include a response body

operationId: ChannelFramework_reportError

Responses

200 Success response
POST /api/v2/any_channel/channelback/report_error
POST /api/v2/any_channel/push

Pushes Channel framework content to Zendesk. #### Allowed For * Admins #### Request parameters The POST request takes a JSON object parameter which contains data about all the resources that the client is pushing. | Name | Type | Required | Comments | ------------------ | ----------| --------- | ------------------- | instance_push_id | string | yes | The account ID where data will be pushed. This was passed to the integration service when the administrator set up the account | request_id | string | no | A unique identifier for the push request | external_resources | array | yes | The [resources](https://developer.zendesk.com) to push #### external_resource object | Name | Type | Max length | Mandatory | Comments |------------------- | ---------------------------------- |------------| --------- | ---------- | external_id | string | 255 | yes | Unique identifier of the external resource. Must be ASCII characters | internal_note | boolean | | no | If true creates a new internal note comment | message | string | 65535 | yes | Text to be converted to a ticket or comment | html_message | string | 65535 | no | HTML version of message | parent_id | string | 511 | no | Unique identifier of the external resource for which this is a response. Used to choose the correct thread. Responses may include `parent_id` or `thread_id`, but not both. See [Conversation threads](/documentation/channel_framework/understanding-the-channel-framework/pull_endpoint/#conversation-threads) | thread_id | string | 255 | no | Arbitrary identifier of the thread to which this item should belong. Responses may include `parent_id` or `thread_id`, but not both. See [Conversation threads](/documentation/channel_framework/understanding-the-channel-framework/pull_endpoint/#conversation-threads) | created_at | string | | yes | When the resource was created in the origin system, as an ISO 8601 extended format date-time. Example: '2015-09-08T22:48:09Z' | author | object | | yes | See [author object](https://developer.zendesk.com) below | display_info | array | | no | Array of integration-specific data used by apps to modify the agent UI. See [display_info object](https://developer.zendesk.com) below | allow_channelback | boolean | | no | If false, prevents the agent from making additional comments on the message in the Zendesk interface | fields | array | | no | Array of ticket fields to set in Zendesk and their values. See [fields array](https://developer.zendesk.com) | file_urls | array | 10 | no | Array of files to be imported into Zendesk. See [file urls](/documentation/channel_framework/understanding-the-channel-framework/pull_endpoint/#file-urls) in the Channel framework docs #### author object | Name | Type | Max chars | Mandatory | Comments |------------ | ------ |---------- |---------- |----------- | external_id | string | 255 | yes | Unique identifier of the user in the origin service | name | string | 255 | no | If not supplied, defaults to external id | image_url | string | 255 | no | URL to an image for the user | locale | String | 255 | no | The user's locale. Must be one of the supported [locales](/api-reference/ticketing/account-configuration/locales/#list-available-public-locales) in Zendesk | fields | array | | no | Array of items containing user field identifier ('id') and value of field ('value'.) For system fields ('notes' or 'details'), the identifier is the English name. For custom fields, the identifier may be the ID or the name #### display_info object | Name | Type | Max chars | Mandatory | Comments |----- | ------ |---------- |---------- |----------- | type | string | 255 | yes | Globally unique type identifier defined by the integration origin service. Examples: a GUID or URI | data | string | 65535 | yes | JSON data containing display hints #### fields array The `fields` array lists ticket fields to set in Zendesk and their values. Each item consists of a field identifier (`id`) and a value (`value`) for the field. For Zendesk system fields such as `subject`, the identifier is the English name. For custom fields, the identifier may be a field ID or a name. See [Ticket Fields](https://developer.zendesk.com). The `fields` array can only set ticket values on ticket creation, not on ticket updates. #### Response format The response is a JSON object containing a single key: | Name | Type | Comments | --------- | -------- | ------------------- | results | array | An array of [result objects](https://developer.zendesk.com) The `results` array contains an entry for each item in the incoming `external_resources` array, in the same order. For example, if you call `push` with 3 external resources, a successful response will include `results` with three entries, corresponding to your 3 resources. #### result object | Name | Type | Comments | -------------------- | ------------------------------ | ------------------- | external_resource_id | string | The external ID of the resource, as passed in | status | object | The status of the import for the indicated resource. See [status object](https://developer.zendesk.com) #### status object | Name | Type | Comments | ----------- | ------ | ------------------- | code | string | A code indicating the status of the import of the resource, as described in [status codes](https://developer.zendesk.com) | description | string | In the case of an exception, a description of the exception. Otherwise, not present. #### status codes | Key | Description | ----------------------------------------- | ---------------- | success | The external resource was successfully converted to a ticket or comment | already_imported | Reimport of the external resource was skipped due to a pre-existing ticket or comment for the resource | could_not_locate_parent_external_resource | The parent resource, as identified by parent_id in the [request](https://developer.zendesk.com), could not be found. The unrecognized parent ID is returned in the description of the [status](https://developer.zendesk.com) | processing_error | An internal exception occurred while processing the resource. See `description` in the [status object](https://developer.zendesk.com) | halted | This resource was not processed because processing of previous resources failed

operationId: ChannelFramework_pushContentSupport

Responses

200 Success response
POST /api/v2/any_channel/push
POST /api/v2/any_channel/validate_token

#### Allowed For * Admins #### Request parameters The POST request takes a JSON object parameter which contains the token to be validated. | Name | Type | Required | Comments | ------------------ | ----------| --------- | ------------------- | instance_push_id | string | yes | The ID of the account to which data will be pushed. This was passed to the integration service when the administrator set up the account | request_id | string | no | A unique identifier for the push request #### Response format The response body is empty.

operationId: ChannelFramework_validateToken

Responses

200 Success response
POST /api/v2/any_channel/validate_token

Custom object fields 7 endpoints

GET /api/v2/custom_objects/{custom_object_key}/fields

Lists all undeleted custom fields for the specified object. #### Allowed For * Agents #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com).

operationId: CustomObjectFields_listUndeleted

Parameters

Name In Required Type Description
optional
optional

Responses

200 Success response
GET /api/v2/custom_objects/{custom_object_key}/fields
POST /api/v2/custom_objects/{custom_object_key}/fields

Creates any of the following custom field types: * text (default when no "type" is specified) * textarea * checkbox * date * integer * decimal * regexp * dropdown * lookup See [About custom field types](https://support.zendesk.com/hc/en-us/articles/203661866) in Zendesk help. #### Allowed For * Admins

operationId: CustomObjectFields_createField

Parameters

Name In Required Type Description
optional

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/CustomObjectFieldsCreateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/CustomObjectFieldsCreateRequestExample"
        }
      }
    }
  }
}

Responses

201 Created
POST /api/v2/custom_objects/{custom_object_key}/fields
PUT /api/v2/custom_objects/{custom_object_key}/fields/reorder

Sets a preferred order of custom fields for a specific object by providing field ids in the desired order. #### Allowed For * Admins

operationId: CustomObjectFields_reorderFields

Parameters

Name In Required Type Description
optional

Responses

200 Reordered
PUT /api/v2/custom_objects/{custom_object_key}/fields/reorder
DELETE /api/v2/custom_objects/{custom_object_key}/fields/{custom_object_field_key_or_id}

Deletes a field with the specified key. Note: You can't delete standard fields. #### Allowed For * Admins

operationId: CustomObjectFields_deleteField

Parameters

Name In Required Type Description
optional
optional

Responses

204 No content response
DELETE /api/v2/custom_objects/{custom_object_key}/fields/{custom_object_field_key_or_id}
GET /api/v2/custom_objects/{custom_object_key}/fields/{custom_object_field_key_or_id}

Returns a custom field for a specific object using a provided key or id of the field. #### Allowed For * Agents

operationId: CustomObjectFields_getFieldInfo

Parameters

Name In Required Type Description
optional
optional

Responses

200 Custom Object Field
GET /api/v2/custom_objects/{custom_object_key}/fields/{custom_object_field_key_or_id}
PATCH /api/v2/custom_objects/{custom_object_key}/fields/{custom_object_field_key_or_id}

Updates individual custom object fields. The updating rules are as follows: * Takes a `custom_object_field` object that specifies the properties to update * The `key` property cannot be updated * If updating a standard field, only the `title` and `description` properties can be updated. #### Allowed For * Admins

operationId: CustomObjectFields_updateField

Parameters

Name In Required Type Description
optional
optional

Responses

200 Success response
PATCH /api/v2/custom_objects/{custom_object_key}/fields/{custom_object_field_key_or_id}
GET /api/v2/custom_objects/{custom_object_key}/limits/field_limit

List the current count and the limit for a custom object's fields #### Allowed For * Agents

operationId: CustomObjectFields_getFieldLimit

Parameters

Name In Required Type Description
optional

Responses

200 Success response
GET /api/v2/custom_objects/{custom_object_key}/limits/field_limit

Custom object records 12 endpoints

GET /api/v2/custom_objects/limits/record_limit

List the current count and the limit for custom object records #### Allowed For * Agents

operationId: CustomObjectRecords_getLimit

Responses

200 Success response
GET /api/v2/custom_objects/limits/record_limit
POST /api/v2/custom_objects/{custom_object_key}/jobs

Queues a background job to perform bulk actions on up to 100 custom object records per single request. Takes a `job` object with two nested fields: * `action`, one of: * `"create"` * `"delete"` * `"delete_by_external_id"` * `"create_or_update_by_external_id"` * `"update"` * `items` * For a `"create"` action, an array of JSON objects representing the custom object records being created * For a `"delete"` action, an array of strings representing Zendesk record ids * For a `"delete_by_external_id"` action, an array of strings representing external ids * For a `"create_or_update_by_external_id"` action, an array of JSON objects representing the custom object records being created or updated * For an `"update"` action, an array of JSON objects representing the custom object records being updated #### Allowed For * Agents #### Response ### This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information.

operationId: CustomObjectRecords_createBulkJobs

Parameters

Name In Required Type Description
optional

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/CustomObjectRecordsBulkCreateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/CustomObjectRecordsBulkCreateRequestExample"
        }
      }
    }
  }
}

Responses

201 Created
POST /api/v2/custom_objects/{custom_object_key}/jobs
DELETE /api/v2/custom_objects/{custom_object_key}/records

Deletes a record with the specified external id. #### Allowed For * Agents

operationId: CustomObjectRecords_deleteByExternalId

Parameters

Name In Required Type Description
optional
optional

Responses

204 No content response
DELETE /api/v2/custom_objects/{custom_object_key}/records
GET /api/v2/custom_objects/{custom_object_key}/records

Lists all undeleted custom object records for the specified object #### Pagination * [Cursor pagination](/api-reference/introduction/pagination/#cursor-pagination) only. #### Allowed For * Agents

operationId: CustomObjectRecords_list

Parameters

Name In Required Type Description
optional
filter[ids] query optional string Optional comma-separated list of ids to filter records by. If one or more ids are specified, only matching records are returned. The ids must be unique and are case sensitive.
filter[external_ids] query optional string Optional comma-separated list of external ids to filter records by. If one or more ids are specified, only matching records are returned. The ids must be unique and are case sensitive.
sort query optional string One of `id`, `updated_at`, `-id`, or `-updated_at`. The `-` denotes the sort will be descending.
page[before] query optional string A [pagination cursor](https://developer.zendesk.com) that tells the endpoint which page to start on. It should be a `meta.before_cursor` value from a previous request. Note: `page[before]` and `page[after]` can't be used together in the same request.
page[after] query optional string A [pagination cursor](https://developer.zendesk.com) that tells the endpoint which page to start on. It should be a `meta.after_cursor` value from a previous request. Note: `page[before]` and `page[after]` can't be used together in the same request.
page[size] query optional integer Specifies how many records should be returned in the response. You can specify up to 100 records per page.

Responses

200 Success response
GET /api/v2/custom_objects/{custom_object_key}/records
PATCH /api/v2/custom_objects/{custom_object_key}/records

If a record exists for the given external id, updates it. Only the specified attributes are updated. Otherwise, creates a new record with the provided external id and attributes. #### Allowed For * Agents

operationId: CustomObjectRecords_setByExternalId

Parameters

Name In Required Type Description
optional
optional

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/CustomObjectRecordsUpsertRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/CustomObjectRecordsUpsertRequestExample"
        }
      }
    }
  }
}

Responses

200 Success
PATCH /api/v2/custom_objects/{custom_object_key}/records
POST /api/v2/custom_objects/{custom_object_key}/records

Creates a custom object record according to all the properties described by a custom object definition #### Allowed For * Agents

operationId: CustomObjectRecords_createNewRecord

Parameters

Name In Required Type Description
optional

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/CustomObjectRecordsCreateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/CustomObjectRecordsCreateRequestExample"
        }
      }
    }
  }
}

Responses

201 Created
POST /api/v2/custom_objects/{custom_object_key}/records
GET /api/v2/custom_objects/{custom_object_key}/records/autocomplete

Retrieves an array of custom object records that have a field value that matches the value specified in the `name` parameter. #### Pagination * [Cursor pagination](/api-reference/introduction/pagination/#cursor-pagination) only. * Returns the first 10,000 records sorted by relevancy with page limits. #### Allowed For * Agents

operationId: CustomObjectRecords_autocompleteSearch

Parameters

Name In Required Type Description
optional
name query optional string Part of a name of the record you are searching for
page[before] query optional string A [pagination cursor](https://developer.zendesk.com) that tells the endpoint which page to start on. It should be a `meta.before_cursor` value from a previous request. Note: `page[before]` and `page[after]` can't be used together in the same request.
page[after] query optional string A [pagination cursor](https://developer.zendesk.com) that tells the endpoint which page to start on. It should be a `meta.after_cursor` value from a previous request. Note: `page[before]` and `page[after]` can't be used together in the same request.
page[size] query optional integer The number of records to return in the response. You can specify up to 100 records per page.
field_id query optional string The id of the lookup field. If the field has a relationship filter, the filter is applied to the results. Must be used with `source` param.
source query optional string One of "zen:user", "zen:ticket", "zen:organization", or "zen:custom_object:CUSTOM_OBJECT_KEY". Represents the object `field_id` belongs to. Must be used with field_id param.
requester_id query optional integer The id of the requester. For use with dynamic filters.
assignee_id query optional integer The id of the selected assignee. For use with dynamic filters.
organization_id query optional integer The id of the organization the requester belongs to. For use with dynamic filters.

Responses

200 Success response
GET /api/v2/custom_objects/{custom_object_key}/records/autocomplete
GET /api/v2/custom_objects/{custom_object_key}/records/count

Returns a total count of records for a specific custom object as well as the time the count was refreshed. #### Allowed For * Agents

operationId: CustomObjectRecords_getCount

Parameters

Name In Required Type Description
optional

Responses

200 Success response
GET /api/v2/custom_objects/{custom_object_key}/records/count
GET /api/v2/custom_objects/{custom_object_key}/records/search

Returns an array of custom object records that meet the search criteria #### Pagination * [Cursor pagination](/api-reference/introduction/pagination/#cursor-pagination) only. * Returns the records sorted by relevancy with page limits. Without a `sort` parameter, only the first 10,000 records are returned. With a `sort` parameter, all records are returned. #### Allowed For * Agents

operationId: CustomObjectRecords_search

Parameters

Name In Required Type Description
optional
query query optional string The query parameter is used to search text-based fields for records that match specific query terms. The query can be multiple words or numbers. Every record that matches the beginning of any word or number in the query string is returned.<br/><br/> Fuzzy search is supported for the following text-based field types: : Text fields, Multi Line Text fields, and RegExp fields.<br/><br/> For example, you might want to search for records related to Tesla vehicles: `query=Tesla`. In this example the API would return every record for the given custom object where any of the supported text fields contain the word 'Tesla'.<br/><br/> You can include multiple words or numbers in your search. For example: `query=Tesla Honda 2020`. This search phrase would be URL encoded as `query=Tesla%20Honda%202020` and return every record for the custom object for which any of the supported text fields contained 'Tesla', 'Honda', or '2020'.
sort query optional string One of `name`, `created_at`, `updated_at`, `-name`, `-created_at`, or `-updated_at`. The `-` denotes the sort will be descending. Defaults to sorting by relevance.
page[before] query optional string A [pagination cursor](https://developer.zendesk.com) that tells the endpoint which page to start on. It should be a `meta.before_cursor` value from a previous request. Note: `page[before]` and `page[after]` can't be used together in the same request.
page[after] query optional string A [pagination cursor](https://developer.zendesk.com) that tells the endpoint which page to start on. It should be a `meta.after_cursor` value from a previous request. Note: `page[before]` and `page[after]` can't be used together in the same request.
page[size] query optional integer Specifies how many records should be returned in the response. You can specify up to 100 records per page.

Responses

200 Success response
GET /api/v2/custom_objects/{custom_object_key}/records/search
DELETE /api/v2/custom_objects/{custom_object_key}/records/{custom_object_record_id}

Deletes a record with the specified id #### Allowed For * Agents

operationId: CustomObjectRecords_deleteRecordById

Parameters

Name In Required Type Description
optional
optional

Responses

204 No content response
DELETE /api/v2/custom_objects/{custom_object_key}/records/{custom_object_record_id}
GET /api/v2/custom_objects/{custom_object_key}/records/{custom_object_record_id}

Returns a custom record for a specific object using a provided id. #### Allowed For * Agents

operationId: CustomObjectRecords_getById

Parameters

Name In Required Type Description
optional
optional

Responses

200 Custom Object Record
GET /api/v2/custom_objects/{custom_object_key}/records/{custom_object_record_id}
PATCH /api/v2/custom_objects/{custom_object_key}/records/{custom_object_record_id}

Updates an individual custom object record. The updating rules are as follows: * Takes a `custom_object_record` object that specifies the properties to update * The custom object fields should be nested inside a `custom_object_fields` object #### Allowed For * Agents

operationId: CustomObjectRecords_updateFields

Parameters

Name In Required Type Description
optional
optional

Responses

200 Success response
PATCH /api/v2/custom_objects/{custom_object_key}/records/{custom_object_record_id}

Custom objects 6 endpoints

GET /api/v2/custom_objects

Lists all undeleted custom objects for the account #### Allowed For * Agents

operationId: CustomObjects_listUndeleted

Responses

200 Success response
GET /api/v2/custom_objects
POST /api/v2/custom_objects

Creates an object describing all the properties required to create a custom object record #### Allowed For * Admins

operationId: CustomObjects_createCustomObjectRecord

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/CustomObjectsCreateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/CustomObjectsCreateRequestExample"
        }
      }
    }
  }
}

Responses

201 Created
POST /api/v2/custom_objects
GET /api/v2/custom_objects/limits/object_limit

List the current count and the limit for custom objects #### Allowed For * Admins

operationId: CustomObjects_getLimit

Responses

200 Success response
GET /api/v2/custom_objects/limits/object_limit
DELETE /api/v2/custom_objects/{custom_object_key}

Permanently deletes the custom object with the specified key #### Allowed For * Admins

operationId: CustomObjects_deleteObject

Parameters

Name In Required Type Description
optional

Responses

204 No content response
DELETE /api/v2/custom_objects/{custom_object_key}
GET /api/v2/custom_objects/{custom_object_key}

Returns an object with the specified key #### Allowed For * Agents

operationId: CustomObjects_getByKey

Parameters

Name In Required Type Description
optional

Responses

200 Custom Object
GET /api/v2/custom_objects/{custom_object_key}
PATCH /api/v2/custom_objects/{custom_object_key}

Updates an individual custom object. The updating rules are as follows: * Takes a `custom_object` object that specifies the properties to update * The `key` property cannot be updated #### Allowed For * Admins

operationId: CustomObjects_updateObjectProperties

Parameters

Name In Required Type Description
optional

Responses

200 Success response
PATCH /api/v2/custom_objects/{custom_object_key}

Custom roles 5 endpoints

GET /api/v2/custom_roles

#### Availability * Accounts on the Enterprise plan or above #### Allowed For * Agents

operationId: CustomRoles_listRoles

Responses

200 Success response
GET /api/v2/custom_roles
POST /api/v2/custom_roles

#### Availability * Accounts on the Enterprise plan or above #### Allowed for * Administrators * Agents with the `manage_roles` permission

operationId: CustomRoles_createRole

Responses

200 Created response
POST /api/v2/custom_roles
DELETE /api/v2/custom_roles/{custom_role_id}

#### Availability * Accounts on the Enterprise plan or above #### Allowed for * Administrators * Agents with the `manage_roles` permission

operationId: CustomRoles_deleteRole

Responses

204 No Contetnt response
DELETE /api/v2/custom_roles/{custom_role_id}
GET /api/v2/custom_roles/{custom_role_id}

#### Availability * Accounts on the Enterprise plan or above #### Allowed for * Administrators * Agents with the `manage_roles` permission

operationId: CustomRoles_showRole

Responses

200 Success response
GET /api/v2/custom_roles/{custom_role_id}
PUT /api/v2/custom_roles/{custom_role_id}

#### Availability * Accounts on the Enterprise plan or above #### Allowed for * Administrators Agents with the `manage_roles` permission

operationId: CustomRoles_updateRole

Responses

200 Success response
PUT /api/v2/custom_roles/{custom_role_id}

Custom ticket statuses 5 endpoints

PUT /api/v2/custom_status/default

Updates the default values for many custom ticket statuses at once. #### Allowed For * Admins

operationId: CustomTicketStatuses_bulkUpdateDefault

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/BulkUpdateDefaultCustomStatusRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/BulkUpdateDefaultCustomStatusRequestExample"
        }
      }
    }
  }
}

Responses

200 Updated
PUT /api/v2/custom_status/default
GET /api/v2/custom_statuses

Lists all undeleted custom ticket statuses for the account. No pagination is provided. #### Allowed For * End Users

operationId: CustomTicketStatuses_listUndeleted

Parameters

Name In Required Type Description
status_categories query optional string Filter the list of custom ticket statuses by a comma-separated list of status categories
active query optional boolean If true, show only active custom ticket statuses. If false, show only inactive custom ticket statuses. If the filter is not used, show all custom ticket statuses
default query optional boolean If true, show only default custom ticket statuses. If false, show only non-default custom ticket statuses. If the filter is not used, show all custom ticket statuses

Responses

200 List custom ticket statuses
GET /api/v2/custom_statuses
POST /api/v2/custom_statuses

Takes a `custom_status` object that specifies the custom ticket status properties to create. #### Allowed For * Admins

operationId: CustomTicketStatuses_createNewStatus

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/CustomStatusCreateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/CustomStatusCreateRequestExample"
        }
      }
    }
  }
}

Responses

201 Created
POST /api/v2/custom_statuses
GET /api/v2/custom_statuses/{custom_status_id}

Returns the custom ticket status object. #### Allowed For * End Users

operationId: CustomTicketStatuses_getObject

Parameters

Name In Required Type Description
optional

Responses

200 Custom Status
GET /api/v2/custom_statuses/{custom_status_id}
PUT /api/v2/custom_statuses/{custom_status_id}

Takes a `custom_status` object that specifies the properties to update. #### Allowed For * Admins

operationId: CustomTicketStatuses_updateStatus

Parameters

Name In Required Type Description
optional

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/CustomStatusUpdateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/CustomStatusUpdateRequestExample"
        }
      }
    }
  }
}

Responses

200 Updated
PUT /api/v2/custom_statuses/{custom_status_id}

Dynamic content 6 endpoints

GET /api/v2/dynamic_content/items

Returns a list of all dynamic content items for your account if accessed as an admin or agents who have permission to manage dynamic content. #### Allowed For * Admins, Agents #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com).

operationId: DynamicContent_listItems

Responses

200 Success response
GET /api/v2/dynamic_content/items
POST /api/v2/dynamic_content/items

Create a new content item, with one or more variants in the item's `variants` array. See [Specifying item variants](https://developer.zendesk.com). The `default_locale_id` and variant `locale_id` values must be one of the locales the account has active. You can get the list with the [List Locales](/api-reference/ticketing/account-configuration/locales/#list-locales) endpoint. #### Allowed For * Admins, Agents

operationId: DynamicContent_createItemWithVariants

Responses

201 Created response
POST /api/v2/dynamic_content/items
GET /api/v2/dynamic_content/items/show_many

#### Stability * Development #### Allowed For * Admins, Agents

operationId: DynamicContent_showManyItems

Parameters

Name In Required Type Description
identifiers query optional string Identifiers for the dynamic contents

Responses

200 Success response
GET /api/v2/dynamic_content/items/show_many
DELETE /api/v2/dynamic_content/items/{dynamic_content_item_id}

#### Allowed For * Admins, Agents

operationId: DynamicContent_deleteItem

Responses

204 No Content response
DELETE /api/v2/dynamic_content/items/{dynamic_content_item_id}
GET /api/v2/dynamic_content/items/{dynamic_content_item_id}

#### Allowed For * Admins, Agents

operationId: DynamicContent_showItem

Responses

200 Success response
GET /api/v2/dynamic_content/items/{dynamic_content_item_id}
PUT /api/v2/dynamic_content/items/{dynamic_content_item_id}

The only attribute you can change is the name. To add a variant to the item, or to update or delete the variants of the item, use the [Item Variants API](/api-reference/ticketing/ticket-management/dynamic_content_item_variants/#update-many-variants). #### Allowed For * Admins, Agents

operationId: DynamicContent_updateItemName

Responses

200 Success response
PUT /api/v2/dynamic_content/items/{dynamic_content_item_id}

Dynamic content item variants 7 endpoints

GET /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants

Returns all the variants of the specified dynamic content item. #### Allowed For * Admins * Agents who have permission to manage dynamic content #### Pagination * Cursor pagination See [Pagination](https://developer.zendesk.com).

operationId: DynamicContentItemVariants_list

Responses

200 Success response
GET /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants
POST /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants

You can only create one variant for each locale id. If a locale variant already exists, the request is rejected. #### Allowed For * Admins, Agents

operationId: DynamicContentItemVariants_createNewVariant

Responses

201 Created response
POST /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants
POST /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants/create_many

#### Allowed For * Admins, Agents

operationId: DynamicContentItemVariants_createMany

Responses

201 Created response
POST /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants/create_many
PUT /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants/update_many

Updates one or more variants. See [Update Variant](/api-reference/ticketing/ticket-management/dynamic_content_item_variants/#update-variant). You must specify the variants by id in the body. To get the variant ids, see [List Variants](/api-reference/ticketing/ticket-management/dynamic_content_item_variants/#list-variants). #### Allowed For * Admins, Agents

operationId: DynamicContentItemVariants_updateMany

Responses

200 Success response
PUT /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants/update_many
DELETE /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants/{dynammic_content_variant_id}

#### Allowed For * Admins, Agents

operationId: DynamicContentItemVariants_deleteVariant

Responses

204 No Content response
DELETE /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants/{dynammic_content_variant_id}
GET /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants/{dynammic_content_variant_id}

#### Allowed For * Admins, Agents

operationId: DynamicContentItemVariants_show

Responses

200 Success response
GET /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants/{dynammic_content_variant_id}
PUT /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants/{dynammic_content_variant_id}

Updates the specified variant. You don't need to include all the properties. If you just want to update content, for example, then include just that. You can't switch the active state of the default variant of an item. Similarly, you can't switch the default to false if the variant is the default. You must make another variant default instead. #### Allowed For * Admins, Agents

operationId: DynamicContentItemVariants_updateVariant

Responses

200 Success response
PUT /api/v2/dynamic_content/items/{dynamic_content_item_id}/variants/{dynammic_content_variant_id}

Essentials card 4 endpoints

GET /api/v2/object_layouts/essentials_cards

Gets the list of essentials cards. #### Allowed For * Admins

operationId: EssentialsCard_listCards

Responses

200 Success response
GET /api/v2/object_layouts/essentials_cards
DELETE /api/v2/object_layouts/{object_type}/essentials_card

Delete the essentials card for an object type. #### Allowed For * Admins and agents

operationId: EssentialsCard_deleteObjectEssentials

Responses

204 Success response
DELETE /api/v2/object_layouts/{object_type}/essentials_card
GET /api/v2/object_layouts/{object_type}/essentials_card

Gets the essentials card for an object type. #### Allowed For * Admins and agents

operationId: EssentialsCard_getForObject

Responses

200 Success response
GET /api/v2/object_layouts/{object_type}/essentials_card
PUT /api/v2/object_layouts/{object_type}/essentials_card

Updates the essentials card for an object type. #### Allowed For * Admins

operationId: EssentialsCard_updateObjectCard

Responses

200 Success response
PUT /api/v2/object_layouts/{object_type}/essentials_card

Group memberships 8 endpoints

GET /api/v2/group_memberships

#### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For: * Agents

operationId: GroupMemberships_listMemberships

Parameters

Name In Required Type Description
optional
optional

Responses

200 Success response
GET /api/v2/group_memberships
POST /api/v2/group_memberships

Assigns an agent to a given group. #### Allowed For * Admins * Agents assigned to a custom role with permissions to manage group memberships (Enterprise only)

operationId: GroupMemberships_assignAgentToGroup

Responses

201 Created response
POST /api/v2/group_memberships
GET /api/v2/group_memberships/assignable

Returns a maximum of 100 group memberships per page. #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For: * Agents

operationId: GroupMemberships_listAssignableMemberships

Responses

200 Success response
GET /api/v2/group_memberships/assignable
POST /api/v2/group_memberships/create_many

Assigns up to 100 agents to given groups. #### Allowed For * Admins * Agents assigned to a custom role with permissions to manage group memberships (Enterprise only) #### Response This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion.

operationId: GroupMemberships_bulkAssignAgentsToGroups

Responses

200 Success response
POST /api/v2/group_memberships/create_many
DELETE /api/v2/group_memberships/destroy_many

Immediately removes users from groups and schedules a job to unassign all working tickets that are assigned to the given user and group combinations. #### Allowed For * Admins * Agents assigned to a custom role with permissions to manage group memberships (Enterprise only)

operationId: GroupMemberships_bulkDelete

Parameters

Name In Required Type Description
ids query optional string Id of the group memberships to delete. Comma separated

Responses

200 Success response
DELETE /api/v2/group_memberships/destroy_many
DELETE /api/v2/group_memberships/{group_membership_id}

Immediately removes a user from a group and schedules a job to unassign all working tickets that are assigned to the given user and group combination. #### Allowed For * Admins * Agents assigned to a custom role with permissions to manage group memberships (Enterprise only)

operationId: GroupMemberships_removeUserFromGroup

Responses

204 No content response
DELETE /api/v2/group_memberships/{group_membership_id}
GET /api/v2/group_memberships/{group_membership_id}

The 'id' is the group membership id, not a group id. #### Allowed For * Agents

operationId: GroupMemberships_showDetails

Responses

200 Success response
GET /api/v2/group_memberships/{group_membership_id}
PUT /api/v2/users/{user_id}/group_memberships/{group_membership_id}/make_default

#### Allowed For: * Agents

operationId: GroupMemberships_setAsDefault

Responses

200 Success response
PUT /api/v2/users/{user_id}/group_memberships/{group_membership_id}/make_default

Group sla policies 7 endpoints

GET /api/v2/group_slas/policies

#### Allowed For * Admins

operationId: GroupSlaPolicies_list

Responses

200 Success response
GET /api/v2/group_slas/policies
POST /api/v2/group_slas/policies

#### Allowed For * Admins

operationId: GroupSlaPolicies_createNewPolicy

Responses

201 Created response
POST /api/v2/group_slas/policies
GET /api/v2/group_slas/policies/definitions

#### Allowed For * Admins

operationId: GroupSlaPolicies_getSupportedFilterDefinitionItems

Responses

200 Success response
GET /api/v2/group_slas/policies/definitions
PUT /api/v2/group_slas/policies/reorder

#### Allowed For * Admins

operationId: GroupSlaPolicies_reorder

Parameters

Name In Required Type Description
group_sla_policy_ids query optional array The ids of the Group SLA policies to reorder

Responses

200 Success response
PUT /api/v2/group_slas/policies/reorder
DELETE /api/v2/group_slas/policies/{group_sla_policy_id}

#### Allowed For * Admins

operationId: GroupSlaPolicies_deletePolicy

Responses

204 No Content response
DELETE /api/v2/group_slas/policies/{group_sla_policy_id}
GET /api/v2/group_slas/policies/{group_sla_policy_id}

#### Allowed For * Admins

operationId: GroupSlaPolicies_showPolicy

Responses

200 Success response
GET /api/v2/group_slas/policies/{group_sla_policy_id}
PUT /api/v2/group_slas/policies/{group_sla_policy_id}

Updates the specified policy. #### Allowed For * Admins

operationId: GroupSlaPolicies_updatePolicy

Responses

200 Success response
PUT /api/v2/group_slas/policies/{group_sla_policy_id}

Groups 7 endpoints

GET /api/v2/groups

#### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Admins * Agents

operationId: Groups_list

Parameters

Name In Required Type Description
optional
optional

Responses

200 Success response
GET /api/v2/groups
POST /api/v2/groups

#### Allowed For * Admins * Agents assigned to a custom role with permissions to manage groups (Enterprise only)

operationId: Groups_createNewGroup

Responses

201 Created response
POST /api/v2/groups
GET /api/v2/groups/assignable

#### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Admins * Agents

operationId: Groups_listAssignableGroups

Responses

200 Success response
GET /api/v2/groups/assignable
GET /api/v2/groups/count

Returns an approximate count of groups. If the count exceeds 100,000, it is updated every 24 hours. The `refreshed_at` property of the `count` object is a timestamp that indicates when the count was last updated. **Note**: When the count exceeds 100,000, `refreshed_at` may occasionally be null. This indicates that the count is being updated in the background, and the `value` property of the `count` object is limited to 100,000 until the update is complete. #### Allowed For * Admins * Agents

operationId: Groups_getCount

Responses

200 Success response
GET /api/v2/groups/count
DELETE /api/v2/groups/{group_id}

#### Allowed For * Admins * Agents assigned to a custom role with permissions to manage groups (Enterprise only)

operationId: Groups_deleteGroup

Responses

204 No content response
DELETE /api/v2/groups/{group_id}
GET /api/v2/groups/{group_id}

#### Allowed For * Admins * Agents

operationId: Groups_showGroup

Responses

200 Success response
GET /api/v2/groups/{group_id}
PUT /api/v2/groups/{group_id}

#### Allowed For * Admins

operationId: Groups_updateGroup

Responses

200 Success response
PUT /api/v2/groups/{group_id}

Incremental export 7 endpoints

GET /api/v2/incremental/organizations

#### Allowed For * Admins #### Sideloading See [Organizations sideloads](/documentation/ticketing/using-the-zendesk-api/side_loading/#supported-endpoints).

operationId: IncrementalExport_organizationsGet

Responses

200 Success response
GET /api/v2/incremental/organizations
GET /api/v2/incremental/ticket_events

Returns a stream of changes that occurred on tickets. Each event is tied to an update on a ticket and contains all the fields that were updated in that change. For more information, see: - [Exporting ticket events](/documentation/ticketing/managing-tickets/using-the-incremental-export-api#exporting-ticket-events) in [Using the Incremental Exports API](https://developer.zendesk.com) - [Time-based incremental exports](/documentation/ticketing/managing-tickets/using-the-incremental-export-api#time-based-incremental-exports) in [Using the Incremental Exports API](https://developer.zendesk.com) You can include comments in the event stream by using the `comment_events` sideload. See Sideloading below. If you don't specify the sideload, any comment present in the ticket update is described only by Boolean `comment_present` and `comment_public` object properties in the event's `child_events` array. The comment itself is not included. #### Allowed For * Admins #### Sideloading The endpoint supports the `comment_events` sideload. Any comment present in the ticket update is listed as an object in the event's `child_events` array. Example: ```js "child_events": [ { "id": 91048994488, "via": { "channel": "api", "source": {"from":{},"to":{},"rel":null}}, "via_reference_id":null, "type": "Comment", "author_id": 5031726587, "body": "This is a comment", "html_body": "&lt;div class="zd-comment"&gt;&lt;p dir="auto"&gt;This is a comment&lt;/p&gt;", "public": true, "attachments": [], "audit_id": 91048994468, "created_at": "2009-06-25T10:15:18Z", "event_type": "Comment" }, ... ], ... ```

operationId: IncrementalExport_ticketEventsGetStream

Responses

200 Success response
GET /api/v2/incremental/ticket_events
GET /api/v2/incremental/tickets

Returns the tickets that changed since the start time. For more information, see [Exporting tickets](/documentation/ticketing/managing-tickets/using-the-incremental-export-api#exporting-tickets) in [Using the Incremental Exports API](https://developer.zendesk.com). This endpoint supports time-based incremental exports. For more information, see [Time-based incremental exports](/documentation/ticketing/managing-tickets/using-the-incremental-export-api#time-based-incremental-exports) in [Using the Incremental Exports API](https://developer.zendesk.com). You can also return tickets using cursor-based pagination. See [Incremental Ticket Export, Cursor Based](https://developer.zendesk.com). The results include tickets that were updated by the system. See [Excluding system-updated tickets](/documentation/ticketing/managing-tickets/using-the-incremental-export-api#excluding-system-updated-tickets-time-based-exports) in [Using the Incremental Exports API](https://developer.zendesk.com). The endpoint can return tickets with an `updated_at` time that's earlier than the `start_time` time. The reason is that the API compares the `start_time` with the ticket's `generated_timestamp` value, not its `updated_at` value. The `updated_at` value is updated only if the update generates a [ticket event](https://developer.zendesk.com). The `generated_timestamp` value is updated for all ticket updates, including system updates. If a system update occurs after a ticket event, the unchanged `updated_at` time will become earlier relative to the updated `generated_timestamp` time. #### Allowed For * Admins #### Sideloading See [Tickets sideloads](/documentation/ticketing/using-the-zendesk-api/side_loading/#supported-endpoints). For performance reasons, `last_audits` sideloads aren't supported.

operationId: IncrementalExport_timeBasedTickets

Responses

200 Success response
GET /api/v2/incremental/tickets
GET /api/v2/incremental/tickets/cursor

Returns the tickets that changed since the start time. For more information, see [Exporting tickets](/documentation/ticketing/managing-tickets/using-the-incremental-export-api#exporting-tickets) in [Using the Incremental Exports API](https://developer.zendesk.com). This endpoint supports cursor-based incremental exports. Cursor-based exports are highly encouraged because they provide more consistent performance and response body sizes. For more information, see [Cursor-based incremental exports](/documentation/ticketing/managing-tickets/using-the-incremental-export-api#cursor-based-incremental-exports) in [Using the Incremental Exports API](https://developer.zendesk.com). #### Allowed For * Admins #### Sideloading See [Tickets sideloads](/documentation/ticketing/using-the-zendesk-api/side_loading/#supported-endpoints). For performance reasons, `last_audits` sideloads aren't supported.

operationId: IncrementalExport_ticketsChangedSinceStart

Responses

200 Success response
GET /api/v2/incremental/tickets/cursor
GET /api/v2/incremental/users

#### Allowed For * Admins #### Sideloading See [Users sideloads](/documentation/ticketing/using-the-zendesk-api/side_loading/#supported-endpoints).

operationId: IncrementalExport_userExportTimeBased

Responses

200 Success response
GET /api/v2/incremental/users
GET /api/v2/incremental/users/cursor

#### Allowed For * Admins #### Sideloading See [Users sideloads](/documentation/ticketing/using-the-zendesk-api/side_loading/#supported-endpoints).

operationId: IncrementalExport_userCursorGet

Responses

200 Success response
GET /api/v2/incremental/users/cursor
GET /api/v2/incremental/{incremental_resource}/sample

Use this endpoint to test the incremental export format. It's more strict in terms of rate limiting, at 10 requests per 20 minutes instead of 10 requests per minute. It also returns only up to 50 results per request. Otherwise, it's identical to the above APIs. Use the `incremental_resource` parameter to specify the resource. Possible values are "tickets", "ticket_events", "users", or "organizations".

operationId: IncrementalExport_sampleGet

Responses

200 Success response
GET /api/v2/incremental/{incremental_resource}/sample

Incremental skill based routing 3 endpoints

GET /api/v2/incremental/routing/attribute_values

Returns a stream of changes that occurred on routing attribute values. #### Allowed For * Admins #### Parameters Optional | Name | Type | Comment | ------ | ------ | ------- | cursor | string | The `cursor` parameter is a non-human-readable argument you can use to move forward or backward in time. The cursor is a read-only URL parameter that's only available in API responses. See [Pagination](https://developer.zendesk.com).

operationId: IncrementalSkillBasedRouting_getAttributeValues

Responses

200 Success response
GET /api/v2/incremental/routing/attribute_values
GET /api/v2/incremental/routing/attributes

Returns a stream of changes that occurred on routing attributes. #### Allowed For * Admins #### Parameters Optional | Name | Type | Comment | ------ | ------ | ------- | cursor | string | The `cursor` parameter is a non-human-readable argument you can use to move forward or backward in time. The cursor is a read-only URL parameter that's only available in API responses. See [Pagination](https://developer.zendesk.com).

operationId: IncrementalSkillBasedRouting_exportChanges

Responses

200 Success response
GET /api/v2/incremental/routing/attributes
GET /api/v2/incremental/routing/instance_values

Returns a stream of changes that occurred on routing instance values. Changes are grouped by `attribute_value_id`, with unassociate type events listed with associate type events by the associate event’s timestamp. #### Allowed For * Admins #### Parameters Optional | Name | Type | Comment | ------ | ------ | ------- | cursor | string | The `cursor` parameter is a non-human-readable argument you can use to move forward or backward in time. The cursor is a read-only URL parameter that's only available in API responses. See [Pagination](https://developer.zendesk.com).

operationId: IncrementalSkillBasedRouting_routingInstanceValuesGet

Responses

200 Success response
GET /api/v2/incremental/routing/instance_values

Job statuses 3 endpoints

GET /api/v2/job_statuses

Shows the statuses for background jobs. Statuses are sorted first by completion date and then by creation date in descending order. #### Allowed For: * Agents #### Pagination * Cursor pagination See [Pagination](https://developer.zendesk.com).

operationId: JobStatuses_list

Responses

200 Success Response
GET /api/v2/job_statuses
GET /api/v2/job_statuses/show_many

Accepts a comma-separated list of job status ids. #### Allowed For: * Agents

operationId: JobStatuses_getMany

Parameters

Name In Required Type Description
ids query required string Comma-separated list of job status ids.

Responses

200 Success Response
GET /api/v2/job_statuses/show_many
GET /api/v2/job_statuses/{job_status_id}

Shows the status of a background job. #### Allowed For: * Agents

operationId: JobStatuses_showStatus

Responses

200 Success Response
GET /api/v2/job_statuses/{job_status_id}

Locales 6 endpoints

GET /api/v2/locales

Lists the translation locales available for the account. **Note**: You can alter the list by passing an updated `locale_ids` array to the [Update Account Settings](/api-reference/ticketing/account-configuration/account_settings/#update-account-settings) endpoint. #### Allowed For * Anyone

operationId: Locales_listAvailable

Responses

200 Success response
GET /api/v2/locales
GET /api/v2/locales/agent

Lists the translation locales that have been localized for agents on a specific account. #### Allowed For * Anyone

operationId: Locales_listForAgent

Responses

200 Success response
GET /api/v2/locales/agent
GET /api/v2/locales/current

This works like [Show Locale](https://developer.zendesk.com), but instead of taking a locale id as an argument, it renders the locale of the user performing the request. #### Allowed For * Anyone

operationId: Locales_getCurrentLocale

Responses

200 Success response
GET /api/v2/locales/current
GET /api/v2/locales/detect_best_locale

#### Allowed For * Anyone

operationId: Locales_detectBestLocale

Responses

200 Success response
GET /api/v2/locales/detect_best_locale
GET /api/v2/locales/public

Lists the translation locales that are available to all accounts. #### Allowed For * Anyone

operationId: Locales_listPublicAvailable

Responses

200 Success response
GET /api/v2/locales/public
GET /api/v2/locales/{locale_id}

#### Allowed For * Anyone

operationId: Locales_showLocale

Responses

200 Success Response
GET /api/v2/locales/{locale_id}

Lookup relationships 2 endpoints

GET /api/v2/relationships/definitions/{target_type}

Returns filter definitions based on the given target type. Target types include users (zen:user), tickets (zen:ticket), organizations (zen:organization), or custom objects (zen:custom_object:CUSTOM_OBJECT_KEY). The returned filter definitions are the options that you can use to build a custom field or ticket field's `relationship_filter`.

operationId: LookupRelationships_filterDefinitions

Parameters

Name In Required Type Description
target_type path required string The target type for which you would like to see filter definitions. The options are "zen:user", "zen:ticket", "zen:organization", and "zen:custom_object:CUSTOM_OBJECT_KEY"
source_type query optional string The source type for which you would like to see filter definitions. The options are "zen:user", "zen:ticket", and "zen:organization"

Responses

200 Success response
GET /api/v2/relationships/definitions/{target_type}
GET /api/v2/{target_type}/{target_id}/relationship_fields/{field_id}/{source_type}

Returns a list of source objects whose values are populated with the id of a related target object. For example, if you have a lookup field called "Success Manager" on a ticket, this endpoint can answer the question, "What tickets (sources) is this user (found by `target_type` and `target_id`) assigned as the 'Success Manager' (field referenced by `field_id`)?" #### Allowed For * Agents #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com).

operationId: LookupRelationships_getSourcesByTarget

Parameters

Name In Required Type Description
target_type path required string The type of object the relationship field is targeting. The options are "zen:user", "zen:ticket", "zen:organization", and "zen:custom_object:CUSTOM_OBJECT_KEY"
target_id path required integer The id of the object the relationship field is targeting
field_id path required integer The id of the lookup relationship field
source_type path required string The type of object the relationship field belongs to (example. ticket field belongs to a ticket object). The options are "zen:user", "zen:ticket", "zen:organization", and "zen:custom_object:CUSTOM_OBJECT_KEY"

Responses

200 Success response
GET /api/v2/{target_type}/{target_id}/relationship_fields/{field_id}/{source_type}

Macros 19 endpoints

GET /api/v2/macros

Lists all shared and personal macros available to the current user. For admins, the API returns all macros for the account, including the personal macros of agents and other admins. #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents

operationId: Macros_list

Parameters

Name In Required Type Description
optional
optional
optional
optional
optional
optional
optional
optional

Responses

200 Success Response
GET /api/v2/macros
POST /api/v2/macros

#### Allowed For * Agents

operationId: Macros_createNewMacro

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MacrosCreateNewMacroRequest"
      },
      "examples": {
        "default": {
          "value": {
            "macro": {
              "title": "Roger Wilco",
              "actions": [
                {
                  "field": "status",
                  "value": "solved"
                }
              ]
            }
          }
        }
      }
    }
  }
}

Responses

200 OK
POST /api/v2/macros
GET /api/v2/macros/actions

#### Allowed For * Agents

operationId: Macros_listSupportedActions

Responses

200 Success Response
GET /api/v2/macros/actions
GET /api/v2/macros/active

Lists all active shared and personal macros available to the current user. #### Allowed For * Agents

operationId: Macros_listActive

Parameters

Name In Required Type Description
optional
optional
optional
optional
optional
optional

Responses

200 Success Response
GET /api/v2/macros/active
POST /api/v2/macros/attachments

Allows an attachment to be uploaded that can be associated with a macro at a later time. **Note:** To ensure an uploaded attachment is not lost, associate it with a macro as soon as possible. From time to time, old attachments that are not not associated with any macro are purged. #### Allowed For * Agents

operationId: Macros_createUnassociatedAttachment

Responses

201 Created Response
POST /api/v2/macros/attachments
GET /api/v2/macros/attachments/{attachment_id}

Shows the properties of the specified macro attachment. #### Allowed For * Agents

operationId: Macros_showAttachmentProperties

Responses

200 Success Response
GET /api/v2/macros/attachments/{attachment_id}
GET /api/v2/macros/categories

Lists all macro categories available to the current user. #### Allowed For * Agents

operationId: Macros_listCategories

Responses

200 Success Response
GET /api/v2/macros/categories
GET /api/v2/macros/definitions

Returns the definitions of the actions a macro can perform. For example, one action can set the status of a ticket. The definition of the action includes a title ("Status"), a type ("list"), and possible values. For a list of support actions, see [Actions reference](https://developer.zendesk.com). #### Allowed For * Agents

operationId: Macros_listActionDefinitions

Responses

200 Success Response
GET /api/v2/macros/definitions
DELETE /api/v2/macros/destroy_many

Deletes the macros corresponding to the provided comma-separated list of IDs. #### Allowed For * Agents

operationId: Macros_deleteMany

Parameters

Name In Required Type Description
ids query required array The IDs of the macros to delete

Responses

204 No Content
DELETE /api/v2/macros/destroy_many
GET /api/v2/macros/new

Returns an unpersisted macro representation derived from a ticket or macro. The endpoint takes one of the following query parameters: `macro_id` or `ticket_id`. If you include both, `macro_id` is used. #### Allowed For * Agents

operationId: Macros_showReplica

Responses

200 Success Response
GET /api/v2/macros/new
GET /api/v2/macros/search

#### Pagination * Offset pagination only See [Using Offset Pagination](/api-reference/ticketing/introduction/#using-offset-pagination). #### Allowed For * Agents

operationId: Macros_searchAgents

Responses

200 Success Response
GET /api/v2/macros/search
PUT /api/v2/macros/update_many

Updates the provided macros with the specified changes. #### Allowed For * Agents

operationId: Macros_updateMany

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MacroUpdateManyInput"
      },
      "examples": {
        "default": {
          "value": {
            "macros": [
              {
                "id": 25,
                "active": false
              },
              {
                "id": 23,
                "position": 5
              }
            ]
          }
        }
      }
    }
  }
}

Responses

200 Success Response
PUT /api/v2/macros/update_many
DELETE /api/v2/macros/{macro_id}

#### Allowed For * Agents, with restrictions applying on certain actions

operationId: Macros_deleteMacroById

Responses

204 No Content
DELETE /api/v2/macros/{macro_id}
GET /api/v2/macros/{macro_id}

#### Allowed For * Agents

operationId: Macros_showMacro

Responses

200 Success Response
GET /api/v2/macros/{macro_id}
PUT /api/v2/macros/{macro_id}

#### Allowed For * Agents

operationId: Macros_updateMacroAgent

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MacrosUpdateMacroAgentRequest"
      },
      "examples": {
        "default": {
          "value": {
            "macro": {
              "title": "Sets the ticket status to `solved`",
              "actions": [
                {
                  "field": "status",
                  "value": "solved"
                }
              ]
            }
          }
        }
      }
    }
  }
}

Responses

200 OK
PUT /api/v2/macros/{macro_id}
GET /api/v2/macros/{macro_id}/apply

Returns the changes the macro would make to a ticket. It doesn't actually change a ticket. You can use the response data in a subsequent API call to the [Tickets](https://developer.zendesk.com) endpoint to update the ticket. The response includes only the ticket fields that would be changed by the macro. To get the full ticket object after the macro is applied, see [Show Ticket After Changes](https://developer.zendesk.com). #### Allowed For * Agents

operationId: Macros_showChangesToTicket

Responses

200 Success Response
GET /api/v2/macros/{macro_id}/apply
GET /api/v2/macros/{macro_id}/attachments

Lists the attachments associated with a macro. #### Allowed For * Agents

operationId: Macros_listAttachments

Responses

200 Success Response
GET /api/v2/macros/{macro_id}/attachments
POST /api/v2/macros/{macro_id}/attachments

Allows an attachment to be uploaded and associated with a macro at the same time. **Note:** A macro can be associated with up to five attachments. #### Allowed For * Agents

operationId: Macros_createAttachment

Responses

201 Success Response
POST /api/v2/macros/{macro_id}/attachments
GET /api/v2/tickets/{ticket_id}/macros/{macro_id}/apply

Returns the full ticket object as it would be after applying the macro to the ticket. It doesn't actually change the ticket. To get only the ticket fields that would be changed by the macro, see [Show Changes to Ticket](https://developer.zendesk.com). #### Allowed For * Agents

operationId: Macros_showTicketAfterChanges

Responses

200 Success Response
GET /api/v2/tickets/{ticket_id}/macros/{macro_id}/apply

Omnichannel routing queues 6 endpoints

GET /api/v2/queues

#### Allowed For * Admins

operationId: OmnichannelRoutingQueues_list

Responses

200 Success response
GET /api/v2/queues
POST /api/v2/queues

#### Allowed For * Admins

operationId: OmnichannelRoutingQueues_createNewQueue

Responses

201 Created response
POST /api/v2/queues
GET /api/v2/queues/definitions

#### Allowed For * Admins

operationId: OmnichannelRoutingQueues_listDefinitions

Responses

200 Success response
GET /api/v2/queues/definitions
DELETE /api/v2/queues/{queue_id}

#### Allowed For * Admins

operationId: OmnichannelRoutingQueues_deleteQueue

Responses

204 No content response
DELETE /api/v2/queues/{queue_id}
GET /api/v2/queues/{queue_id}

#### Allowed For * Admins

operationId: OmnichannelRoutingQueues_showQueue

Responses

200 Success response
GET /api/v2/queues/{queue_id}
PUT /api/v2/queues/{queue_id}

#### Allowed For * Admins

operationId: OmnichannelRoutingQueues_updateQueue

Responses

200 Success response
PUT /api/v2/queues/{queue_id}

Organization fields 6 endpoints

GET /api/v2/organization_fields

Returns a list of custom organization fields in your account. Fields are returned in the order that you specify in your organization fields configuration in Zendesk Support. Clients should cache this resource for the duration of their API usage and map the key for each organization field to the values returned under the `organization_fields` attribute on the [organization](https://developer.zendesk.com) resource. #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents

operationId: OrganizationFields_list

Responses

200 Success response
GET /api/v2/organization_fields
POST /api/v2/organization_fields

Creates any of the following custom field types: * text (default when no "type" is specified) * textarea * checkbox * date * integer * decimal * regexp * dropdown * lookup See [About custom field types](https://support.zendesk.com/hc/en-us/articles/203661866) in Zendesk help. #### Allowed For * Admins

operationId: OrganizationFields_createField

Responses

201 Created response
POST /api/v2/organization_fields
PUT /api/v2/organization_fields/reorder

#### Allowed For * Admins

operationId: OrganizationFields_reorderField

Responses

200 Success response
PUT /api/v2/organization_fields/reorder
DELETE /api/v2/organization_fields/{organization_field_id}

#### Allowed for * Admins

operationId: OrganizationFields_deleteField

Responses

204 No Content response
DELETE /api/v2/organization_fields/{organization_field_id}
GET /api/v2/organization_fields/{organization_field_id}

#### Allowed for * Agents

operationId: OrganizationFields_showField

Responses

200 Success response
GET /api/v2/organization_fields/{organization_field_id}
PUT /api/v2/organization_fields/{organization_field_id}

#### Updating a Drop-down (Tagger) Field Drop-down fields return an array of `custom_field_options` which specify the name, value, and order of drop-down options. When updating a drop-down field, note the following information: - All options must be passed on update. Options that are not passed will be removed. As a result, these values will be removed from any organizations - To create a new option, pass a null `id` along with the `name` and `value` - To update an existing option, pass its `id` along with the `name` and `value` - To reorder an option, reposition it in the `custom_field_options` array relative to the other options - To remove an option, omit it from the list of options upon update #### Example Request ```bash curl https://{subdomain}.zendesk.com/api/v2/organization_fields/{organization_field_id}.json \ -H "Content-Type: application/json" -X PUT \ -d '{"organization_field": {"custom_field_options": [{"id": 124, "name": "Option 2", "value": "option_2"}, {"id": 123, "name": "Option 1", "value": "option_1"}, {"id": 125, "name": "Option 3", "value": "option_3"}]}}' \ -v -u {email_address}:{password} ``` #### Allowed for * Admins

operationId: OrganizationFields_updateDropdown

Responses

200 Success response
PUT /api/v2/organization_fields/{organization_field_id}

Organization memberships 9 endpoints

GET /api/v2/organization_memberships

Returns a list of organization memberships for the account, user or organization in question. **Note**: When returning organization memberships for a user, organization memberships are sorted with the default organization first, and then by organization name. #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For - Agents - End users

operationId: OrganizationMemberships_list

Responses

200 Success response
GET /api/v2/organization_memberships
POST /api/v2/organization_memberships

Assigns a user to a given organization. Returns an error with status 422 if the user is already assigned to the organization. #### Allowed For * Admins * Agents when creating a new organization membership for an end user

operationId: OrganizationMemberships_assignUserToOrganization

Responses

201 Created response
POST /api/v2/organization_memberships
POST /api/v2/organization_memberships/create_many

This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information. #### Allowed For * Admins * Agents

operationId: OrganizationMemberships_createMany

Responses

200 Success response
POST /api/v2/organization_memberships/create_many
DELETE /api/v2/organization_memberships/destroy_many

Immediately removes a user from an organization and schedules a job to unassign all working tickets currently assigned to the user and organization combination. The `organization_id` of the unassigned tickets is set to null. #### Response This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information. #### Allowed For * Agents

operationId: OrganizationMemberships_bulkDeleteMany

Parameters

Name In Required Type Description
ids query optional array The IDs of the organization memberships to delete

Responses

200 Success response
DELETE /api/v2/organization_memberships/destroy_many
DELETE /api/v2/organization_memberships/{organization_membership_id}

Immediately removes a user from an organization and schedules a job to unassign all working tickets currently assigned to the user and organization combination. The `organization_id` of the unassigned tickets is set to null. #### Allowed for * Admins * Agents when deleting an organization membership for an end user

operationId: OrganizationMemberships_removeMemberAndUnassignTickets

Responses

204 No Content response
DELETE /api/v2/organization_memberships/{organization_membership_id}
GET /api/v2/organization_memberships/{organization_membership_id}

#### Allowed for * Agents

operationId: OrganizationMemberships_showMembership

Responses

200 Success response
GET /api/v2/organization_memberships/{organization_membership_id}
PUT /api/v2/users/{user_id}/organization_memberships/{organization_membership_id}/make_default

Sets the default organization membership of a given user. #### Allowed for * Admins * Agents when setting the default organization membership for an end user

operationId: OrganizationMemberships_setDefaultMembership

Responses

200 Success response
PUT /api/v2/users/{user_id}/organization_memberships/{organization_membership_id}/make_default
DELETE /api/v2/users/{user_id}/organizations/{organization_id}

Immediately removes a user from an organization and schedules a job to unassign all working tickets currently assigned to the user and organization combination. The `organization_id` of the unassigned tickets is set to null. #### Allowed For * Agents

operationId: OrganizationMemberships_removeUserFromOrganization

Responses

204 No Content response
DELETE /api/v2/users/{user_id}/organizations/{organization_id}
PUT /api/v2/users/{user_id}/organizations/{organization_id}/make_default

Sets the default organization membership of a given user. #### Allowed For * Agents

operationId: OrganizationMemberships_setAsDefault

Responses

200 Success response
PUT /api/v2/users/{user_id}/organizations/{organization_id}/make_default

Organization subscriptions 4 endpoints

GET /api/v2/organization_subscriptions

#### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For: * Agents * End users For end users, the response will only list the subscriptions created by the requesting end user.

operationId: OrganizationSubscriptions_list

Responses

200 Successful response
GET /api/v2/organization_subscriptions
POST /api/v2/organization_subscriptions

#### Allowed For: * Agents * End users End users can only subscribe to shared organizations in which they're members.

operationId: OrganizationSubscriptions_createNewSubscription

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/OrganizationSubscriptionCreateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/OrganizationSubscriptionCreateRequestExample"
        }
      }
    }
  }
}

Responses

200 Successful response
POST /api/v2/organization_subscriptions
DELETE /api/v2/organization_subscriptions/{organization_subscription_id}

#### Allowed For: * Agents * End users

operationId: OrganizationSubscriptions_deleteSubscription

Parameters

Name In Required Type Description
optional

Responses

204 No content
DELETE /api/v2/organization_subscriptions/{organization_subscription_id}
GET /api/v2/organization_subscriptions/{organization_subscription_id}

#### Allowed For: * Agents * End users For end users, the response will only list the subscriptions created by the requesting end user.

operationId: OrganizationSubscriptions_showDetails

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
GET /api/v2/organization_subscriptions/{organization_subscription_id}

Organizations 17 endpoints

GET /api/v2/organization_merges/{organization_merge_id}

Retrieves the details of a specific organization merge operation. This endpoint is useful for obtaining the status and outcome of a merge that was previously initiated. It provides information such as the winning and losing organization IDs, the status of the merge, and the associated URLs. This endpoint can be used to determine if a merge is still in progress, has completed successfully, or has encountered an error. #### Allowed For * Admins

operationId: Organizations_getMergeDetails

Responses

200 Success response
GET /api/v2/organization_merges/{organization_merge_id}
GET /api/v2/organizations

#### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents, with certain restrictions If the agent has a custom agent role that restricts their access to only users in their own organization, a 403 Forbidden error is returned. See [Creating custom agent roles](https://support.zendesk.com/hc/en-us/articles/203662026-Creating-custom-roles-and-assigning-agents#topic_cxn_hig_bd) in Zendesk help.

operationId: Organizations_list

Responses

200 Success response
GET /api/v2/organizations
POST /api/v2/organizations

You must provide a unique `name` for each organization. Normally the system doesn't allow records to be created with identical names. However, a race condition can occur if you make two or more identical POSTs very close to each other, causing the records to have identical organization names. #### Allowed For * Admins * Agents assigned to a custom role with permissions to manage organizations (Enterprise only)

operationId: Organizations_createNew

Responses

201 Created
POST /api/v2/organizations
GET /api/v2/organizations/autocomplete

Returns an array of organizations whose name starts with the value specified in the `name` parameter. #### Pagination * Offset pagination only See [Using Offset Pagination](/api-reference/ticketing/introduction/#using-offset-pagination). #### Allowed For * Agents

operationId: Organizations_autocomplete

Responses

200 Success response
400 Bad request
429 Too Many Requests
500 Internal Server Error
GET /api/v2/organizations/autocomplete
GET /api/v2/organizations/count

Returns an approximate count of organizations. If the count exceeds 100,000, it is updated every 24 hours. The `refreshed_at` property of the `count` object is a timestamp that indicates when the count was last updated. When the count exceeds 100,000, the `refreshed_at` property may occasionally be null. This indicates that the count is being updated in the background and the `value` property of the `count` object is limited to 100,000 until the update is complete. #### Allowed For * Agents

operationId: Organizations_getCount

Responses

200 Success response
GET /api/v2/organizations/count
POST /api/v2/organizations/create_many

Accepts an array of up to 100 organization objects. #### Response This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information. #### Allowed For * Agents, with restrictions applying on certain actions

operationId: Organizations_createMany

Responses

200 Success response
POST /api/v2/organizations/create_many
POST /api/v2/organizations/create_or_update

Creates an organization if it doesn't already exist, or updates an existing organization. Using this method means one less call to check if an organization exists before creating it. You need to specify the id or external id when updating an organization to avoid a duplicate error response. Name is not available as a matching criteria. #### Allowed For * Agents, with restrictions on certain actions

operationId: Organizations_createOrUpdate

Responses

200 Success response
201 Created response
POST /api/v2/organizations/create_or_update
DELETE /api/v2/organizations/destroy_many

Accepts a comma-separated list of up to 100 organization ids or external ids. #### Response This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information. #### Allowed For * Admins * Agents assigned to a custom role with permissions to manage organizations (Enterprise only)

operationId: Organizations_bulkDelete

Responses

200 Success response
DELETE /api/v2/organizations/destroy_many
GET /api/v2/organizations/search

Returns an array of organizations matching the criteria. You may search by an organization's `external_id` or `name`, but not both: #### Searching by `external_id` If you set the `external_id` value of an organization to associate it to an external record, you can use it to search for the organization. For an organization to be returned, its `external_id` must exactly match the value provided (case insensitive). #### Searching by `name` For an organization to be returned, its `name` must exactly match the value provided (case insensitive). #### Allowed For: * Admins * Agents assigned to a custom role with permissions to add or modify organizations (Enterprise only) See [Creating custom agent roles](https://support.zendesk.com/hc/en-us/articles/203662026#topic_cxn_hig_bd) in the Support Help Center.

operationId: Organizations_search

Responses

200 Success response
GET /api/v2/organizations/search
GET /api/v2/organizations/show_many

Accepts a comma-separated list of up to 100 organization ids or external ids. #### Allowed For * Admins * Agents

operationId: Organizations_listMany

Responses

200 Success response
GET /api/v2/organizations/show_many
PUT /api/v2/organizations/update_many

Bulk or batch updates up to 100 organizations. #### Bulk update To make the same change to multiple organizations, use the following endpoint and data format: `https://{subdomain}.zendesk.com/api/v2/organizations/update_many.json?ids=1,2,3` ```js { "organization": { "notes": "Priority" } } ``` #### Batch update To make different changes to multiple organizations, use the following endpoint and data format: `https://{subdomain}.zendesk.com/api/v2/organizations/update_many.json` ```js { "organizations": [ { "id": 1, "notes": "Priority" }, { "id": 2, "notes": "Normal" } ] } ``` #### Response This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information. #### Allowed For * Admins * Agents Agents with no permissions restrictions can only update "notes" on organizations.

operationId: Organizations_updateManyBulk

Responses

200 Success response
PUT /api/v2/organizations/update_many
DELETE /api/v2/organizations/{organization_id}

#### Allowed For * Admins * Agents assigned to a custom role with permissions to manage organizations (Enterprise only)

operationId: Organizations_deleteOrganization

Responses

204 No Content Response
DELETE /api/v2/organizations/{organization_id}
GET /api/v2/organizations/{organization_id}

#### Allowed For * Admins * Agents

operationId: Organizations_showInfo

Responses

200 Success response
GET /api/v2/organizations/{organization_id}
PUT /api/v2/organizations/{organization_id}

#### Allowed For * Admins * Agents Agents with no permissions restrictions can only update "notes" on organizations. **Note:** Updating an organization's `domain_names` property overwrites all existing `domain_names` values. To prevent this, submit a complete list of `domain_names` for the organization in your request. #### Example Request ```js { "organization": { "notes": "Something interesting" } } ```

operationId: Organizations_updateNotes

Responses

200 Success response
429 Too Many Requests
PUT /api/v2/organizations/{organization_id}
PUT /api/v2/organizations/{organization_id}/merge

Merges two organizations by moving all users, tickets, and domain names from the organization specified by `{organization_id}` to the organization specified by `winner_id`. After the merge: - The "losing" organization will be deleted. - Other organization fields and their values will not be carried over to the "winning" organization. - The merge operation creates an `Organization Merge` record which contains a status indicating the progress of the merge. **Note**: This operation is irreversible. #### Merge Statuses | Status | Description | |--------|-------------| | new | A job has been queued to merge the two organizations. | | in progress | The job to merge the two organizations has started. | | error | An error occurred during the merge job. The merge can be retried by repeating the API call. | | complete | The merge has been completed successfully. | #### Allowed For * Admins

operationId: Organizations_mergeOrganization

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/OrganizationMergeRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/OrganizationMergeRequestExample"
        }
      }
    }
  },
  "required": true
}

Responses

200 Success response
PUT /api/v2/organizations/{organization_id}/merge
GET /api/v2/organizations/{organization_id}/merges

Retrieves a list of all organization merge operations associated with a given organization. This endpoint allows you to track the history of merge actions for an organization, including ongoing and completed merges. Each entry in the list contains details such as the ID of the merge, the winning and losing organization IDs, the current status of the merge, and a URL to access the `Organization Merge` record. #### Pagination - Cursor pagination is used for this endpoint. - A maximum of 100 records can be returned per page. See [Pagination](https://developer.zendesk.com) for more details. #### Allowed For * Admins

operationId: Organizations_listMerges

Responses

200 Success response
GET /api/v2/organizations/{organization_id}/merges
GET /api/v2/organizations/{organization_id}/related

#### Allowed For * Agents

operationId: Organizations_showRelatedInformation

Responses

200 Success response
GET /api/v2/organizations/{organization_id}/related

Push notification devices 1 endpoints

POST /api/v2/push_notification_devices/destroy_many

Unregisters the mobile devices that are receiving push notifications. Specify the devices as an array of mobile device tokens. #### Allowed for * Admins

operationId: PushNotificationDevices_bulkUnregister

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/PushNotificationDevicesRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/PushNotificationDevicesRequestExample"
        }
      }
    }
  }
}

Responses

200 Successful response
POST /api/v2/push_notification_devices/destroy_many

Requests 7 endpoints

GET /api/v2/requests

#### Allowed for * End Users #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com).

operationId: Requests_list

Parameters

Name In Required Type Description
sort_by query optional string Possible values are "updated_at", "created_at"
sort_order query optional string One of "asc", "desc". Defaults to "asc"

Responses

200 Success response
GET /api/v2/requests
POST /api/v2/requests

Accepts a `request` object that sets one or more properties. #### Allowed for * End users * Anonymous users (rate limit of 5 requests per hour for [trial accounts](https://developer.zendesk.com)) #### Additional properties In addition to the writable request properties in the [JSON Format table](https://developer.zendesk.com) above, you can set the following properties when creating a request. | Name | Type | Mandatory | Comment | ---------------- | -------| --------- | ------- | comment | object | yes | Describes the problem, incident, question, or task. See [Request comments](https://developer.zendesk.com) | collaborators | array | no | Adds collaborators (cc's) to the request. An email notification is sent to them when the ticket is created. See [Setting collaborators](/documentation/ticketing/managing-tickets/creating-and-managing-requests#setting-collaborators) | requester | object | yes* | \*Required for anonymous requests. Specifies the requester of the anonymous request. See [Creating anonymous requests](/documentation/ticketing/managing-tickets/creating-and-managing-requests#creating-anonymous-requests) #### Creating follow-up requests Once a ticket is closed (as distinct from solved), it can't be reopened. However, you can create a new request that references the closed ticket. To create the follow-up request, include a `via_followup_source_id` property in the `request` object that specifies the closed ticket. The parameter only works with closed tickets. It has no effect with other tickets.

operationId: Requests_createNewRequest

Responses

201 Created response
POST /api/v2/requests
GET /api/v2/requests/search

Examples: * `GET /api/v2/requests/search.json?query=printer` * `GET /api/v2/requests/search.json?query=printer&organization_id=1` * `GET /api/v2/requests/search.json?query=printer&cc_id=true` * `GET /api/v2/requests/search.json?query=printer&status=hold,open` #### Pagination * Offset pagination only See [Using Offset Pagination](/api-reference/ticketing/introduction/#using-offset-pagination). #### Results limit The Search Requests endpoint returns up to 1,000 results per query, with a maximum of 100 results per page. See [Pagination](/api-reference/ticketing/introduction/#pagination). If you request a page past the limit (`page=11` at 100 results per page), a 422 Insufficient Resource Error is returned. #### Allowed For * End Users

operationId: Requests_searchResults

Parameters

Name In Required Type Description
query query optional string The syntax and matching logic for the string is detailed in the [Zendesk Support search reference](https://support.zendesk.com/hc/en-us/articles/203663226). See also [Query basics](/api-reference/ticketing/ticket-management/search/#query-basics) in the Tickets API doc.

Responses

200 Success response
GET /api/v2/requests/search
GET /api/v2/requests/{request_id}

#### Sideloads The following sideloads are supported: | Name | Will sideload | ---------------- | ------------- | users | The email ccs for a request by side-loading users #### Allowed For * End Users

operationId: Requests_showRequest

Responses

200 Success response
GET /api/v2/requests/{request_id}
PUT /api/v2/requests/{request_id}

Updates a request with a comment or collaborators (cc's). The end user who created the request can also use it to mark the request as solved. The endpoint can't be used to update other request attributes. #### Writable properties This endpoint can only update the following properties in the request. | Name | Type | Required | Description | | ------------------------ | ------- | -------- | ---------------------------------------------------- | | comment | object | no | Adds a comment to the request. See [Request comments](https://developer.zendesk.com) | | solved | boolean | no | Marks the request as solved. Example: `{"request": {"solved": "true"}}`. End users can mark requests as solved only if the request's `can_be_solved_by_me` property is true. The property is true only when the ticket is assigned to an agent and the ticket type is not a problem but a question, task, or incident | | additional_collaborators | array | no | Adds collaborators to the request. An email notification is sent to them when the ticket is updated. See [Adding collaborators](/documentation/ticketing/managing-tickets/creating-and-managing-requests#adding-collaborators) | #### Allowed For * End users

operationId: Requests_updateWithComment

Responses

200 Success response
PUT /api/v2/requests/{request_id}
GET /api/v2/requests/{request_id}/comments

#### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). #### Sorting By default, comments are sorted by creation date in ascending order. When using cursor pagination, use the following parameter to change the sort order: | Name | Type | Required | Comments | ------ | ------ | -------- | -------- | `sort` | string | no | Possible values are "created_at" (ascending order) or "-created_at" (descending order) When using offset pagination, use the following parameters to change the sort order: | Name | Type | Required | Comments | ------------ | ------ | -------- | -------- | `sort_by` | string | no | One of `created_at`, `updated_at` | `sort_order` | string | no | One of `asc`, `desc` #### Allowed For * End Users

operationId: Requests_listComments

Parameters

Name In Required Type Description
since query optional string Filters the comments from the given datetime
role query optional string One of "agent", "end_user". If not specified it does not filter

Responses

200 Success response
GET /api/v2/requests/{request_id}/comments
GET /api/v2/requests/{request_id}/comments/{ticket_comment_id}

#### Allowed For * End Users

operationId: Requests_getComments

Responses

200 Success response
GET /api/v2/requests/{request_id}/comments/{ticket_comment_id}

Reseller 2 endpoints

POST /api/v2/accounts
operationId: Reseller_createTrialAccount

Responses

201 Created response
POST /api/v2/accounts
GET /api/v2/accounts/available

Zendesk Support credentials are not required to access this endpoint. You can use any Zendesk Support subdomain. Returns "true" if the subdomain is available.

operationId: Reseller_checkSubdomainAvailability

Parameters

Name In Required Type Description
subdomain query required string Specify the name of the subdomain you want to verify. The name can't contain underscores, hyphens, or spaces.

Responses

200 Success response
GET /api/v2/accounts/available

Resource collections 5 endpoints

GET /api/v2/resource_collections

Lists resource collections for the account. #### Allowed for * Admins

operationId: ResourceCollections_list

Responses

200 Success response
GET /api/v2/resource_collections
POST /api/v2/resource_collections

Creates a resource collection from a provided `payload` object. The `payload` object is specified the same way as the content of a requirements.json file in a Zendesk app. See [Specifying Apps Requirements](https://developer.zendesk.com) in the Zendesk Apps framework docs. The response includes a [job status](https://developer.zendesk.com) for creation of the specified resources. #### Allowed for * Admins

operationId: ResourceCollections_createNewCollection

Responses

200 Success response
POST /api/v2/resource_collections
DELETE /api/v2/resource_collections/{resource_collection_id}

Deletes a specified resource collection. The response includes a [job status](https://developer.zendesk.com) for deletion of the collection's resources. #### Allowed for * Admins

operationId: ResourceCollections_deleteCollection

Responses

200 Success response
DELETE /api/v2/resource_collections/{resource_collection_id}
GET /api/v2/resource_collections/{resource_collection_id}

Retrieves details for a specified resource collection. #### Allowed for * Admins

operationId: ResourceCollections_getDetails

Responses

200 Success response
GET /api/v2/resource_collections/{resource_collection_id}
PUT /api/v2/resource_collections/{resource_collection_id}

Updates a resource collection using a provided `payload` object. The `payload` object is specified the same way as the content of a requirements.json file in a Zendesk app. See [Specifying Apps Requirements](https://developer.zendesk.com) in the Zendesk Apps framework docs. The response includes a [job status](https://developer.zendesk.com) for the resource updates. #### Allowed for * Admins

operationId: ResourceCollections_updateResourceCollection

Responses

200 Success response
PUT /api/v2/resource_collections/{resource_collection_id}

Sla policies 7 endpoints

GET /api/v2/slas/policies

#### Availability * Accounts on the Support Professional or Suite Growth plan or above #### Allowed For * Admins

operationId: SlaPolicies_list

Responses

200 Success response
GET /api/v2/slas/policies
POST /api/v2/slas/policies

#### Availability * Accounts on the Support Professional or Suite Growth plan or above #### Allowed For * Admins

operationId: SlaPolicies_createNewPolicy

Responses

201 Created response
POST /api/v2/slas/policies
GET /api/v2/slas/policies/definitions

#### Availability * Accounts on the Support Professional or Suite Growth plan or above #### Allowed For * Admins

operationId: SlaPolicies_getSupportedFilterDefinitionItems

Responses

200 Success response
GET /api/v2/slas/policies/definitions
PUT /api/v2/slas/policies/reorder

#### Availability * Accounts on the Support Professional or Suite Growth plan or above #### Allowed For * Admins

operationId: SlaPolicies_reorderSlaPolicies

Parameters

Name In Required Type Description
sla_policy_ids query optional array The IDs of the SLA Policies to reorder

Responses

200 Success response
PUT /api/v2/slas/policies/reorder
DELETE /api/v2/slas/policies/{sla_policy_id}

#### Availability * Accounts on the Support Professional or Suite Growth plan or above #### Allowed For * Admins

operationId: SlaPolicies_deletePolicy

Responses

204 No Content response
DELETE /api/v2/slas/policies/{sla_policy_id}
GET /api/v2/slas/policies/{sla_policy_id}

#### Availability * Accounts on the Support Professional or Suite Growth plan or above #### Allowed For * Admins

operationId: SlaPolicies_showPolicy

Responses

200 Success response
GET /api/v2/slas/policies/{sla_policy_id}
PUT /api/v2/slas/policies/{sla_policy_id}

Updates the specified policy. #### Availability * Accounts on the Support Professional or Suite Growth plan or above #### Allowed For * Admins

operationId: SlaPolicies_updatePolicy

Responses

200 Success response
PUT /api/v2/slas/policies/{sla_policy_id}

Satisfaction ratings 4 endpoints

GET /api/v2/satisfaction_ratings

#### Allowed For * Admins #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). #### Filters | Parameter | Value | ---------- | ----- | score | offered, unoffered, received, received\_with\_comment, received\_without\_comment,<br/>good, good\_with\_comment, good\_without\_comment,<br/>bad, bad\_with\_comment, bad\_without\_comment | start_time | Time of the oldest satisfaction rating, as a [Unix epoch time](https://www.epochconverter.com/) | end_time | Time of the most recent satisfaction rating, as a [Unix epoch time](https://www.epochconverter.com/) If you specify an unqualified score such as `good`, the results include all the records with and without comments. Examples: * `/api/v2/satisfaction_ratings.json?score=bad` * `/api/v2/satisfaction_ratings.json?score=bad&start_time=1498151194` * `/api/v2/satisfaction_ratings.json?start_time=1340384793&end_time=1371920793`

operationId: SatisfactionRatings_list

Responses

200 Success response
GET /api/v2/satisfaction_ratings
GET /api/v2/satisfaction_ratings/count

Returns an approximate count of satisfaction ratings in the account. If the count exceeds 100,000, the count will return a cached result. This cached result will update every 24 hours. The `count[refreshed_at]` property is a timestamp that indicates when the count was last updated. **Note**: When the count exceeds 100,000, `count[refreshed_at]` may occasionally be null. This indicates that the count is being updated in the background, and `count[value]` is limited to 100,000 until the update is complete. #### Allowed For * Admins

operationId: SatisfactionRatings_getCount

Responses

200 Count of satisfaction ratings
GET /api/v2/satisfaction_ratings/count
GET /api/v2/satisfaction_ratings/{satisfaction_rating_id}

Returns a specific satisfaction rating. You can get the id from the [List Satisfaction Ratings](https://developer.zendesk.com) endpoint. #### Allowed For * Admins

operationId: SatisfactionRatings_getById

Parameters

Name In Required Type Description
satisfaction_rating_id path required integer The id of the satisfaction rating to retrieve

Responses

200 Success response
GET /api/v2/satisfaction_ratings/{satisfaction_rating_id}
POST /api/v2/tickets/{ticket_id}/satisfaction_rating

Creates a CSAT rating for a solved ticket, or for a ticket that was previously solved and then reopened. Only the end user listed as the ticket requester can create a satisfaction rating for the ticket. #### Allowed For * End user who requested the ticket The end user must be a verified user.

operationId: SatisfactionRatings_createNewRating

Responses

200 Success response
POST /api/v2/tickets/{ticket_id}/satisfaction_rating

Satisfaction reasons 2 endpoints

GET /api/v2/satisfaction_reasons

List all reasons for an account #### Allowed For * Admins

operationId: SatisfactionReasons_listReasons

Responses

200 Success response
GET /api/v2/satisfaction_reasons
GET /api/v2/satisfaction_reasons/{satisfaction_reason_id}

#### Allowed For * Admins

operationId: SatisfactionReasons_showReasonById

Parameters

Name In Required Type Description
satisfaction_reason_id path required integer The id of the satisfaction rating reason

Responses

200 Success response
GET /api/v2/satisfaction_reasons/{satisfaction_reason_id}

Sessions 7 endpoints

GET /api/v2/sessions

If authenticated as an admin, returns all the account's sessions. If authenticated as an agent or end user, returns only the sessions of the user making the request. #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). #### Allowed For * Admins, Agents, End users

operationId: Sessions_getAll

Responses

200 Success response
GET /api/v2/sessions
DELETE /api/v2/users/me/logout

Deletes the current session. In practice, this only works when using session auth for requests, such as client-side requests made from a Zendesk app. When using OAuth or basic authentication, you don't have a current session so this endpoint has no effect. #### Allowed For * Admins, Agents, End users

operationId: Sessions_deleteAuthenticatedSession

Responses

204 No Content
DELETE /api/v2/users/me/logout
GET /api/v2/users/me/session

#### Allowed For * Admins, Agents, End users

operationId: Sessions_showAuthenticatedSession

Responses

200 Success response
GET /api/v2/users/me/session
GET /api/v2/users/me/session/renew

#### Allowed For * Admins, Agents, End users

operationId: Sessions_renewSession

Responses

200 Success response
GET /api/v2/users/me/session/renew
DELETE /api/v2/users/{user_id}/sessions

Deletes all the sessions for a user. #### Allowed For * Admins, Agents, End users

operationId: Sessions_bulkDelete

Responses

204 No Content
DELETE /api/v2/users/{user_id}/sessions
DELETE /api/v2/users/{user_id}/sessions/{session_id}

#### Allowed For * Admins, Agents, End users

operationId: Sessions_deleteSession

Responses

204 No Content
DELETE /api/v2/users/{user_id}/sessions/{session_id}
GET /api/v2/users/{user_id}/sessions/{session_id}

#### Allowed For * Admins, Agents, End users

operationId: Sessions_showSession

Responses

200 Success response
GET /api/v2/users/{user_id}/sessions/{session_id}

Sharing agreements 5 endpoints

GET /api/v2/sharing_agreements

#### Allowed For * Agents

operationId: SharingAgreements_list

Responses

200 Success response
GET /api/v2/sharing_agreements
POST /api/v2/sharing_agreements

#### Allowed For * Admins

operationId: SharingAgreements_createNewAgreement

Responses

201 Created response
POST /api/v2/sharing_agreements
DELETE /api/v2/sharing_agreements/{sharing_agreement_id}

Deletes a sharing agreement. #### Allowed For * Admins

operationId: SharingAgreements_deleteAgreement

Responses

204 No Content response
DELETE /api/v2/sharing_agreements/{sharing_agreement_id}
GET /api/v2/sharing_agreements/{sharing_agreement_id}

Returns a sharing agreement for your account. #### Allowed For * Agents

operationId: SharingAgreements_show

Responses

200 Success response
GET /api/v2/sharing_agreements/{sharing_agreement_id}
PUT /api/v2/sharing_agreements/{sharing_agreement_id}

Returns an updated sharing agreement. Only `status` is allowed to be updated. #### Allowed For * Admins

operationId: SharingAgreements_updateStatus

Responses

200 Success response
PUT /api/v2/sharing_agreements/{sharing_agreement_id}

Skill based routing 16 endpoints

GET /api/v2/routing/agents/{user_id}/instance_values

Returns an attribute value. #### Allowed For * Agents and admins

operationId: SkillBasedRouting_listAgentAttributeValues

Responses

200 Success response
GET /api/v2/routing/agents/{user_id}/instance_values
POST /api/v2/routing/agents/{user_id}/instance_values

Adds the specified attributes if no attributes exists, or replaces all existing attributes with the specified attributes. #### Allowed For * Admins

operationId: SkillBasedRouting_setAgentAttributeValues

Responses

200 Success response
POST /api/v2/routing/agents/{user_id}/instance_values
GET /api/v2/routing/attributes

Returns a list of attributes for the account. #### Sideloads The following sideloads are supported: | Name | Will sideload | ---------------- | ------------- | attribute_values | The attribute values available on the account #### Allowed For * Agents and admins

operationId: SkillBasedRouting_listAccountAttributes

Responses

200 Success response
GET /api/v2/routing/attributes
POST /api/v2/routing/attributes

Creates an attribute. #### Allowed For * Agents

operationId: SkillBasedRouting_createAttribute

Responses

201 Created response
POST /api/v2/routing/attributes
GET /api/v2/routing/attributes/definitions

Returns the condition definitions that can be configured to apply attributes to a ticket. #### Allowed For * Admins

operationId: SkillBasedRouting_listAttributeDefinitions

Responses

200 Success response
GET /api/v2/routing/attributes/definitions
DELETE /api/v2/routing/attributes/{attribute_id}

Deletes an attribute. #### Allowed For * Admins

operationId: SkillBasedRouting_deleteAttribute

Responses

204 No Content response
DELETE /api/v2/routing/attributes/{attribute_id}
GET /api/v2/routing/attributes/{attribute_id}

Returns an attribute. #### Allowed For * Admins

operationId: SkillBasedRouting_showAttribute

Responses

200 Success response
GET /api/v2/routing/attributes/{attribute_id}
PUT /api/v2/routing/attributes/{attribute_id}

Updates an attribute. #### Allowed For * Admins

operationId: SkillBasedRouting_updateAttribute

Responses

200 Success response
PUT /api/v2/routing/attributes/{attribute_id}
GET /api/v2/routing/attributes/{attribute_id}/values

Returns a list of attribute values for a provided attribute. #### Allowed For * Admins

operationId: SkillBasedRouting_listAttributeValues

Responses

200 Success response
GET /api/v2/routing/attributes/{attribute_id}/values
POST /api/v2/routing/attributes/{attribute_id}/values

Creates an attribute value. #### Allowed For * Admins

operationId: SkillBasedRouting_createAttributeValue

Responses

201 Created response
POST /api/v2/routing/attributes/{attribute_id}/values
DELETE /api/v2/routing/attributes/{attribute_id}/values/{attribute_value_id}

Deletes an attribute value. #### Allowed For * Agents

operationId: SkillBasedRouting_deleteAttributeValue

Responses

204 No Content response
DELETE /api/v2/routing/attributes/{attribute_id}/values/{attribute_value_id}
GET /api/v2/routing/attributes/{attribute_id}/values/{attribute_value_id}

Returns an attribute value. #### Allowed For * Admins

operationId: SkillBasedRouting_showAttributeValue

Responses

200 Success response
GET /api/v2/routing/attributes/{attribute_id}/values/{attribute_value_id}
PATCH /api/v2/routing/attributes/{attribute_id}/values/{attribute_value_id}

Updates an attribute value. #### Allowed For * Admins

operationId: SkillBasedRouting_updateAttributeValue

Responses

200 Success response
PATCH /api/v2/routing/attributes/{attribute_id}/values/{attribute_value_id}
GET /api/v2/routing/requirements/fulfilled

Returns a list of ticket ids that contain attributes matching the current user's attributes. Accepts a `ticket_ids` parameter for relevant tickets to check for matching attributes. #### Allowed For * Agents and admins

operationId: SkillBasedRouting_listFulfilledTickets

Parameters

Name In Required Type Description
ticket_ids query required integer The IDs of the relevant tickets to check for matching attributes

Responses

200 Success response
GET /api/v2/routing/requirements/fulfilled
GET /api/v2/routing/tickets/{ticket_id}/instance_values

Returns a list of attributes values for the ticket. #### Allowed For * Agents and admins

operationId: SkillBasedRouting_listTicketAttributeValues

Responses

200 Success response
GET /api/v2/routing/tickets/{ticket_id}/instance_values
POST /api/v2/routing/tickets/{ticket_id}/instance_values

Adds the specified attributes if no attributes exists, or replaces all existing attributes with the specified attributes. Invalid or deleted attributes are ignored. #### Allowed For * Admins

operationId: SkillBasedRouting_setTicketAttributeValues

Responses

200 Success response
POST /api/v2/routing/tickets/{ticket_id}/instance_values

Support addresses 6 endpoints

GET /api/v2/recipient_addresses

Lists all the support addresses for the account. #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Admins * Agents

operationId: SupportAddresses_list

Responses

200 Success response
GET /api/v2/recipient_addresses
POST /api/v2/recipient_addresses

Adds a Zendesk or external support address to your account. To add a Zendesk address, use the following syntax: `{local-part}@{accountname}.zendesk.com`. Example: 'sales-team@example.zendesk.com'. The [local-part](https://en.wikipedia.org/wiki/Email_address#Local-part) can be anything you like. To add an external email address such as help@omniwearshop.com, the email must already exist and you must set up forwarding on your email server. The exact steps depend on your mail server. See [Forwarding incoming email to Zendesk Support](https://support.zendesk.com/hc/en-us/articles/203663266). After setting up forwarding, run the [Verify Support Address Forwarding](https://developer.zendesk.com) endpoint. The address won't work in Zendesk Support until it's been verified. #### Allowed For * Admins * Agents with permission to manage channels and extensions. See the system permissions in [Creating custom roles and assigning agents (Enterprise)](https://support.zendesk.com/hc/en-us/articles/203662026-Creating-custom-roles-and-assigning-agents-Enterprise-#topic_cxn_hig_bd) in the Support Help Center

operationId: SupportAddresses_createSupportAddress

Responses

201 Created response
POST /api/v2/recipient_addresses
DELETE /api/v2/recipient_addresses/{support_address_id}

Deletes a support address. #### Allowed For * Admins * Agents with permission to manage channels and extensions. See the system permissions in [Creating custom roles and assigning agents (Enterprise)](https://support.zendesk.com/hc/en-us/articles/203662026-Creating-custom-roles-and-assigning-agents-Enterprise-#topic_cxn_hig_bd) in the Support Help Center

operationId: SupportAddresses_deleteSupportAddress

Responses

204 No Content response
DELETE /api/v2/recipient_addresses/{support_address_id}
GET /api/v2/recipient_addresses/{support_address_id}

#### Allowed For * Admins * Agents

operationId: SupportAddresses_showSupportAddress

Responses

200 Success response
GET /api/v2/recipient_addresses/{support_address_id}
PUT /api/v2/recipient_addresses/{support_address_id}

Updates an existing support address for your account. You can't use this endpoint to update a support address's `email` property. Instead, you can create a new address using the [Create Support Address](https://developer.zendesk.com) endpoint. #### Allowed For * Admins * Agents with permission to manage channels and extensions. See the system permissions in [Creating custom roles and assigning agents (Enterprise)](https://support.zendesk.com/hc/en-us/articles/203662026-Creating-custom-roles-and-assigning-agents-Enterprise-#topic_cxn_hig_bd) in the Support Help Center

operationId: SupportAddresses_updateExistingAddress

Responses

200 Success response
PUT /api/v2/recipient_addresses/{support_address_id}
PUT /api/v2/recipient_addresses/{support_address_id}/verify

Sends a test email to the specified support address to verify that email forwarding for the address works. An external support address won't work in Zendesk Support until it's verified. **Note**: You don't need to verify Zendesk system support addresses. The endpoint takes the following body: `{"type": "forwarding"}`. The value of the `type` property defaults to "forwarding" if none is specified, but the values "spf" and "dns" are also accepted. Use this endpoint after [adding](https://developer.zendesk.com) an external support address to Zendesk Support and setting up forwarding on your email server. See [Forwarding incoming email to Zendesk Support](https://support.zendesk.com/hc/en-us/articles/203663266). The endpoint doesn't return the results of the test. Instead, use the [Show Support Address](https://developer.zendesk.com) endpoint to check that the `forwarding_status` property is "verified". Other verification checks can also be performed using this API. These include SPF checks and DNS checks. When calling the endpoint with `type` set to "spf", it will queries the DNS records to check that the SPF records for Zendesk are present for outbound emails. When calling the endpoint with `type` set to "dns", it runs checks on your CNAME records to make sure they are set up properly in your DNS. #### Allowed For * Admins * Agents with permission to manage channels and extensions. See the system permissions in [Creating custom roles and assigning agents (Enterprise)](https://support.zendesk.com/hc/en-us/articles/203662026-Creating-custom-roles-and-assigning-agents-Enterprise-#topic_cxn_hig_bd) in the Support Help Center

operationId: SupportAddresses_verifyForwarding

Responses

200 Success response
PUT /api/v2/recipient_addresses/{support_address_id}/verify

Suspended tickets 8 endpoints

GET /api/v2/suspended_tickets

#### Allowed For * Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage suspended tickets on Enterprise plans * Unrestricted agents on all other plans #### Sorting You can sort the tickets with the `sort_by` and `sort_order` query string parameters. #### Pagination * Cursor pagination See [Pagination](https://developer.zendesk.com).

operationId: SuspendedTickets_list

Responses

200 Success response
GET /api/v2/suspended_tickets
POST /api/v2/suspended_tickets/attachments

Makes copies of any attachments on a suspended ticket and returns them as [attachment tokens](https://developer.zendesk.com). If the ticket is manually recovered, you can include the attachment tokens on the new ticket. #### Allowed For * Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage suspended tickets on Enterprise plans * Unrestricted agents on all other plans

operationId: SuspendedTickets_copyAttachments

Responses

200 Success response
POST /api/v2/suspended_tickets/attachments
DELETE /api/v2/suspended_tickets/destroy_many

Accepts up to 100 ids (the auto-generated id, not the ticket id.) #### Allowed For * Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage suspended tickets on Enterprise plans * Unrestricted agents on all other plans

operationId: SuspendedTickets_deleteMany

Responses

204 No Content response
DELETE /api/v2/suspended_tickets/destroy_many
POST /api/v2/suspended_tickets/export

Exports a list of suspended tickets for the Zendesk Support instance. To export the list, the endpoint enqueues a job to create a CSV file with the data. When done, Zendesk sends the requester an email containing a link to the CSV file. In the CSV, tickets are sorted by the update timestamp in ascending order. #### Allowed For * Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage suspended tickets on Enterprise plans * Unrestricted agents on all other plans #### Rate limits Limited to one request per minute and up to one million records in return. The rate-limiting mechanism behaves identically to the one described in [Usage limits](/api-reference/ticketing/account-configuration/usage_limits/#monitoring-your-request-activity). We recommend using the `Retry-After` header value as described in [Catching errors caused by rate limiting](/documentation/ticketing/using-the-zendesk-api/best-practices-for-avoiding-rate-limiting#catch).

operationId: SuspendedTickets_exportList

Responses

200 Ok
POST /api/v2/suspended_tickets/export
PUT /api/v2/suspended_tickets/recover_many

Accepts up to 100 ids (the auto-generated id, not the ticket id.) Note that suspended tickets that fail to be recovered are still included in the response. #### Allowed For * Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage suspended tickets on Enterprise plans * Unrestricted agents on all other plans

operationId: SuspendedTickets_recoverMany

Responses

200 Success response
PUT /api/v2/suspended_tickets/recover_many
DELETE /api/v2/suspended_tickets/{id}

#### Allowed For * Unrestricted agents

operationId: SuspendedTickets_deleteTicket

Parameters

Name In Required Type Description
optional

Responses

204 No Content response
DELETE /api/v2/suspended_tickets/{id}
GET /api/v2/suspended_tickets/{id}

#### Allowed For * Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage suspended tickets on Enterprise plans * Unrestricted agents on all other plans

operationId: SuspendedTickets_showTicket

Parameters

Name In Required Type Description
optional

Responses

200 Success response
GET /api/v2/suspended_tickets/{id}
PUT /api/v2/suspended_tickets/{id}/recover

**Note**: During recovery, the API sets the requester to the authenticated agent who called the API, not the original requester. This prevents the ticket from being re-suspended after recovery. To preserve the original requester, use the [Recover Multiple Suspended Tickets](https://developer.zendesk.com) endpoint with the single ticket. This endpoint does not queue an asynchronous job that can be tracked from [Job Statuses](https://developer.zendesk.com). Instead, it processes the request with a synchronous response. - If all recoveries are successful, it returns a 200 with a `tickets` array in the response. - If all recoveries fail, it returns a 422 with a `suspended_tickets` array in the response. - If there is a mixture of successes and failures in a single call, it returns a 422 with a `suspended_tickets` array of the failures in the response. #### Allowed For * Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage suspended tickets on Enterprise plans * Unrestricted agents on all other plans

operationId: SuspendedTickets_recoverTicket

Parameters

Name In Required Type Description
optional

Responses

200 Success response
422 Recovery failed response
PUT /api/v2/suspended_tickets/{id}/recover

Tags 7 endpoints

GET /api/v2/autocomplete/tags

Returns an array of registered and recent tag names that start with the characters specified in the `name` query parameter. You must specify at least 2 characters. #### Pagination * Offset pagination only See [Using Offset Pagination](/api-reference/ticketing/introduction/#using-offset-pagination). #### Allowed For * Agents

operationId: Tags_searchTags

Responses

200 Success response
GET /api/v2/autocomplete/tags
GET /api/v2/tags

Lists up to the 20,000 most popular tags in the last 60 days, in decreasing popularity. #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents

operationId: Tags_listPopular

Responses

200 Success response
GET /api/v2/tags
GET /api/v2/tags/count

Returns an approximate count of tags. If the count exceeds 100,000, it is updated every 24 hours. The `refreshed_at` property of the `count` object is a timestamp that indicates when the count was last updated. **Note**: When the count exceeds 100,000, the `refreshed_at` property in the `count` object may occasionally be null. This indicates that the count is being updated in the background and the `value` property in the `count` object is limited to 100,000 until the update is complete. #### Allowed For * Admins

operationId: Tags_getCount

Responses

200 Success response
GET /api/v2/tags/count
DELETE /api/v2/tickets/{ticket_id}/tags

You can also delete tags from multiple tickets with the [Update Many Tickets](/api-reference/ticketing/tickets/tickets/#update-many-tickets) endpoint. This endpoint supports safe updates. See [Safe Update](/api-reference/ticketing/ticket-management/tags/#safe-update). #### Allowed For * Agents

operationId: Tags_removeFromTicket

Responses

204 No Content response
DELETE /api/v2/tickets/{ticket_id}/tags
GET /api/v2/tickets/{ticket_id}/tags

#### Allowed For * Agents

operationId: Tags_listResourceTags

Responses

200 Success response
GET /api/v2/tickets/{ticket_id}/tags
POST /api/v2/tickets/{ticket_id}/tags

#### Allowed For * Agents

operationId: Tags_setTicketTags

Responses

201 Created response
POST /api/v2/tickets/{ticket_id}/tags
PUT /api/v2/tickets/{ticket_id}/tags

You can also add tags to multiple tickets with the [Update Many Tickets](/api-reference/ticketing/tickets/tickets/#update-many-tickets) endpoint. #### Safe Update If the same ticket is updated by multiple API requests at the same time, some tags could be lost because of ticket update collisions. Include `updated_stamp` and `safe_update` properties in the request body to make a safe update. For `updated_stamp`, retrieve and specify the ticket's latest `updated_at` timestamp. The tag update only occurs if the `updated_stamp` timestamp matches the ticket's actual `updated_at` timestamp at the time of the request. If the timestamps don't match (in other words, if the ticket was updated since you retrieved the ticket's last `updated_at` timestamp), the request returns a 409 Conflict error. #### Example ```js { "tags": ["customer"], "updated_stamp":"2019-09-12T21:45:16Z", "safe_update":"true" } ``` For details, see [Protecting against ticket update collisions](/api-reference/ticketing/tickets/tickets/#protecting-against-ticket-update-collisions). #### Allowed For * Agents

operationId: Tags_addMultiple

Responses

200 Success response
PUT /api/v2/tickets/{ticket_id}/tags

Target failures 2 endpoints

GET /api/v2/target_failures

Returns the 25 most recent target failures, per target. #### Stability * Development #### Allowed For * Admins

operationId: TargetFailures_listRecent

Responses

200 Success response
GET /api/v2/target_failures
GET /api/v2/target_failures/{target_failure_id}

#### Stability * Development #### Allowed For * Admins

operationId: TargetFailures_showFailure

Responses

200 Success response
GET /api/v2/target_failures/{target_failure_id}

Targets 5 endpoints

GET /api/v2/targets

#### Allowed For * Agents

operationId: Targets_list

Responses

200 Success response
GET /api/v2/targets
POST /api/v2/targets

#### Allowed For * Admins

operationId: Targets_createNewTarget

Responses

201 Created response
POST /api/v2/targets
DELETE /api/v2/targets/{target_id}

#### Allowed For * Admins

operationId: Targets_remove

Responses

204 No Content response
DELETE /api/v2/targets/{target_id}
GET /api/v2/targets/{target_id}

#### Allowed For * Agents

operationId: Targets_showDetails

Responses

200 Success response
GET /api/v2/targets/{target_id}
PUT /api/v2/targets/{target_id}

#### Allowed For * Admins

operationId: Targets_updateTarget

Responses

200 Success response
PUT /api/v2/targets/{target_id}

Ticket audits 5 endpoints

GET /api/v2/ticket_audits

Returns ticket audits. Archived tickets are not included in the response. Use the [List Audits for a Ticket](https://developer.zendesk.com) endpoint to retrieve audit records for an archived ticket. To learn more about archived tickets, see [About archived tickets](https://support.zendesk.com/hc/en-us/articles/203657756). This endpoint should not be used for capturing change data. When continually chasing the tail of a cursor, some records will be skipped. For this use case, use the [Incremental Ticket Event Export API](/api-reference/ticketing/ticket-management/incremental_exports/#incremental-ticket-event-export). #### Pagination - Cursor pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Admins

operationId: TicketAudits_listAll

Parameters

Name In Required Type Description
limit query optional integer Maximum number of results returned

Responses

200 Success response
GET /api/v2/ticket_audits
GET /api/v2/tickets/{ticket_id}/audits

Lists the audits for a specified ticket. #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. **Note**: Audits for [Archived Tickets](https://support.zendesk.com/hc/en-us/articles/4408887617050) do not support pagination for this endpoint. #### Allowed for * Agents

operationId: TicketAudits_list

Responses

200 OK response
GET /api/v2/tickets/{ticket_id}/audits
GET /api/v2/tickets/{ticket_id}/audits/count

Returns an approximate count of audits for a specified ticket. If the count exceeds 100,000, the count will return a cached result. This cached result will update every 24 hours. The `count[refreshed_at]` property is a timestamp that indicates when the count was last updated. **Note**: When the count exceeds 100,000, `count[refreshed_at]` may occasionally be null. This indicates that the count is being updated in the background, and `count[value]` is limited to 100,000 until the update is complete. #### Allowed for * Agents

operationId: TicketAudits_getCount

Responses

200 Count of audits on a ticket
GET /api/v2/tickets/{ticket_id}/audits/count
GET /api/v2/tickets/{ticket_id}/audits/{ticket_audit_id}

#### Allowed for * Agents

operationId: TicketAudits_show

Responses

200 OK response
GET /api/v2/tickets/{ticket_id}/audits/{ticket_audit_id}
PUT /api/v2/tickets/{ticket_id}/audits/{ticket_audit_id}/make_private

#### Allowed for * Agents

operationId: TicketAudits_convertToPrivate

Responses

200 description
PUT /api/v2/tickets/{ticket_id}/audits/{ticket_audit_id}/make_private

Ticket comments 7 endpoints

PUT /api/v2/chat_file_redactions/{ticket_id}

Permanently removes one or more chat attachments from a chat ticket. **Note**: This does not work on active chats. For chat tickets that predate March 2020, consider using [Redact Ticket Comment In Agent Workspace](https://developer.zendesk.com). #### Allowed For - Agents [Agent Workspace](https://support.zendesk.com/hc/en-us/articles/360024218473) must enabled for the account. Deleting tickets must be enabled for agents. #### Request Body Properties | Name | Type | Required | Description | | ------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | chat_id | string | true | The `chat_id` in the `ChatStartedEvent` event in the ticket audit. See [Ticket Audits](https://developer.zendesk.com) | | chat_indexes | array | true | The array of `chat_index` in the `ChatFileAttachment` event in the ticket audit. See [Ticket Audits](https://developer.zendesk.com) | To get the required body properties, make a request to the [Ticket Audits](https://developer.zendesk.com) endpoint. Example response: ```http Status 200 OK { "audits": [ "events": [ { "id": 1932802680168, "type": "ChatStartedEvent", "value": { "visitor_id": "10502823-16EkM3T6VNq7KMd", "chat_id": "2109.10502823.Sjuj2YrBpXwei", "history": [ { "chat_index": 0, "type": "ChatFileAttachment", "filename": "image1.jpg" }, { "chat_index": 1, "type": "ChatFileAttachment", "filename": "image2.jpg" } ] } } ] ] } ```

operationId: TicketComments_redactAttachment

Responses

200 Success response
PUT /api/v2/chat_file_redactions/{ticket_id}
PUT /api/v2/chat_redactions/{ticket_id}

Permanently removes words or strings from a chat ticket's comment. Wrap `<redact>` tags around the content in the chat comment you want redacted. Example: ```json { "text": "My ID number is <redact>847564</redact>!" } ``` The characters contained in the tag will be replaced by the ▇ symbol. **Note**: This does not work on active chats. For chat tickets that predate March 2020, consider using [Redact Ticket Comment In Agent Workspace](https://developer.zendesk.com). #### Allowed For - Agents [Agent Workspace](https://support.zendesk.com/hc/en-us/articles/360024218473) must enabled for the account. Deleting tickets must be enabled for agents. #### Request Body Properties | Name | Type | Required | Description | | ------------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | chat_id | string | true | The `chat_id` in the `ChatStartedEvent` event in the ticket audit. See [Ticket Audits](https://developer.zendesk.com) | | chat_index | integer | true | The `chat_index` in the `ChatMessage` event in the ticket audit. See [Ticket Audits](https://developer.zendesk.com) | | text | string | true | The `message` in the `ChatMessage` event in the ticket audit. See [Ticket Audits](https://developer.zendesk.com). Wrap `message` with `<redact>` tags | To get the required body properties, make a request to the [Ticket Audit](https://developer.zendesk.com) endpoint. Example response: ```http Status 200 OK { "audits": [ "events": [ { "id": 1932802680168, "type": "ChatStartedEvent", "value": { "visitor_id": "10502823-16EkM3T6VNq7KMd", "chat_id": "2109.10502823.Sjuj2YrBpXwei", "history": [ { "chat_index": 0, "type": "ChatMessage", "message": "My ID number is 847564!" } ] } } ] ] } ```

operationId: TicketComments_redactChatComment

Responses

200 Success response
PUT /api/v2/chat_redactions/{ticket_id}
PUT /api/v2/comment_redactions/{ticket_comment_id}

Redaction allows you to permanently remove words, strings, or attachments from a ticket comment. In the `html_body` of the comment, wrap the content you want redacted in `<redact>` tags. Example: ```json { "html_body": "<div class=\"zd-comment\" dir=\"auto\">My ID number is <redact>847564</redact>!</div>", "ticket_id":100 } ``` The characters in the redact tag will be replaced by the ▇ symbol. To redact HTML elements such inline images, anchor tags, and links, add the `redact` tag attribute to the element as well as the `<redact>` tag to inner text, if any. Example: `<a href="http://example.com" redact><redact>some link</redact></a>` The `redact` attribute only redacts the tag. Any inner text will be left behind if not enclosed in a `<redact>` tag. Redaction is permanent and can not be undone. Data is permanently deleted from Zendesk servers with no way to recover it. This endpoint provides all the same functionality that the [Redact String in Comment](/api-reference/ticketing/tickets/ticket_comments/#redact-string-in-comment) endpoint provides, plus: - Redaction of comments in closed tickets - Redaction of comments in archived tickets - Redaction of formatted text (bold, italics, hyperlinks) **Limitations**: When content is redacted from an email comment, the content is also redacted from the original email through a background job. It may take a while for the changes to be completed. **Note**: We recommend using this endpoint instead of the [Redact String in Comment](/api-reference/ticketing/tickets/ticket_comments/#redact-string-in-comment) endpoint, which will eventually be deprecated. #### Allowed For - Agents [Agent Workspace](https://support.zendesk.com/hc/en-us/articles/360024218473) must be enabled on the account. For professional accounts, deleting tickets must be enabled for agents. On Enterprise accounts, you can assign agents to a custom role with permissions to redact ticket content. #### Request Body Properties | Name | Type | Required | Description | | -------------------------| ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | ticket_id | integer | true | The ID of the ticket | | html_body | string | false | The `html_body` of the comment containing `<redact>` tags or `redact` attributes | | external_attachment_urls | array | false | Array of attachment URLs belonging to the comment to be redacted. See [`content_url` property of Attachment](https://developer.zendesk.com) |

operationId: TicketComments_redactCommentInWorkspace

Responses

200 Success response
PUT /api/v2/comment_redactions/{ticket_comment_id}
GET /api/v2/tickets/{ticket_id}/comments

Returns the comments added to the ticket. Each comment may include a `content_url` for an attachment or a `recording_url` for a voice comment that points to a file that may be hosted externally. For security reasons, take care not to inadvertently send Zendesk authentication credentials to third parties when attempting to access these files. See [Working with url properties](https://developer.zendesk.com). #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Sorting By default, comments are sorted by creation date in ascending order. When using cursor pagination, use the following parameter to change the sort order: | Name | Type | Required | Comments | ------ | ------ | -------- | -------- | `sort` | string | no | Possible values are "created_at" (ascending order) or "-created_at" (descending order) When using offset pagination, use the following parameters to change the sort order: | Name | Type | Required | Comments | ------------ | ------ | -------- | -------- | `sort_order` | string | no | One of `asc`, `desc`. Defaults to `asc` #### Allowed For * Agents

operationId: TicketComments_list

Parameters

Name In Required Type Description
include_inline_images query optional boolean Default is false. When true, inline images are also listed as attachments in the response
include query optional string Accepts "users". Use this parameter to list email CCs by side-loading users. Example: `?include=users`. **Note**: If the comment source is email, a deleted user will be represented as the CCd email address. If the comment source is anything else, a deleted user will be represented as the user name.

Responses

200 Success response
GET /api/v2/tickets/{ticket_id}/comments
GET /api/v2/tickets/{ticket_id}/comments/count

Returns an approximate count of the comments added to the ticket. If the count exceeds 100,000, the count will return a cached result. This cached result will update every 24 hours. The `count[refreshed_at]` property is a timestamp that indicates when the count was last updated. **Note**: When the count exceeds 100,000, `count[refreshed_at]` may occasionally be null. This indicates that the count is being updated in the background, and `count[value]` is limited to 100,000 until the update is complete. #### Allowed For * Agents

operationId: TicketComments_getCount

Parameters

Name In Required Type Description
optional

Responses

200 Count of ticket comments
GET /api/v2/tickets/{ticket_id}/comments/count
PUT /api/v2/tickets/{ticket_id}/comments/{ticket_comment_id}/make_private

#### Allowed For * Agents

operationId: TicketComments_makePrivate

Responses

200 description
PUT /api/v2/tickets/{ticket_id}/comments/{ticket_comment_id}/make_private
PUT /api/v2/tickets/{ticket_id}/comments/{ticket_comment_id}/redact

Permanently removes words or strings from a ticket comment. Specify the string to redact in an object with a `text` property. Example: `'{"text": "987-65-4320"}'`. The characters of the word or string are replaced by the ▇ symbol. If the comment was made by email, the endpoint also attempts to redact the string from the original email retained by Zendesk for audit purposes. **Note**: If you use the rich text editor, support for redacting formatted text (bold, italics, hyperlinks) is limited. Redaction is permanent. You can't undo the redaction or see *what* was removed. Once a ticket is closed, you can no longer redact strings from its comments. To use this endpoint, the "Agents can delete tickets" option must be enabled in the Zendesk Support admin interface at **Admin** > **Settings** > **Agents**. #### Allowed For * Agents

operationId: TicketComments_redactString

Responses

200 Success response
PUT /api/v2/tickets/{ticket_id}/comments/{ticket_comment_id}/redact

Ticket fields 10 endpoints

GET /api/v2/ticket_fields

Returns a list of all system and custom ticket fields in your account. Cursor pagination returns a maximum of 100 records per page and fields are returned in the order specified by their id. If the results are not paginated every field is returned in the response and fields are returned in the order specified by the position and id. For accounts without access to multiple ticket forms, positions can be changed using the [Update Ticket Field](/api-reference/ticketing/tickets/ticket_fields/#update-ticket-field) endpoint or the Ticket Forms page in Zendesk Support (**Admin** > **Manage** > **Ticket Forms**). The Ticket Forms page shows the fields for the account. The order of the fields is used in the different products to show the field values in the tickets. For accounts with access to multiple ticket forms, positions can only be changed using the [Update Ticket Field](/api-reference/ticketing/tickets/ticket_fields/#update-ticket-field) endpoint because products use the order defined on each form to show the field values instead of the general position of the ticket field in the account. Consider caching this resource to use with the [Tickets](/api-reference/ticketing/tickets/tickets/#json-format) API. #### Pagination - Cursor pagination (recommended) - No pagination See [Pagination](https://developer.zendesk.com). #### Sideloads The following sideloads are supported: | Name | Will sideload | ---------------- | ------------- | users | The user or users that created the ticket field #### Allowed For * Agents

operationId: TicketFields_listFields

Parameters

Name In Required Type Description
locale query optional string Forces the `title_in_portal` property to return a dynamic content variant for the specified locale. Only accepts [active locale ids](/api-reference/ticketing/account-configuration/locales/#list-locales). Example: `locale="de"`.
creator query optional boolean Displays the `creator_user_id` and `creator_app_name` properties. If the ticket field is created by an app, `creator_app_name` is the name of the app and `creator_user_id` is `-1`. If the ticket field is not created by an app, `creator_app_name` is null

Responses

200 Success response
GET /api/v2/ticket_fields
POST /api/v2/ticket_fields

Creates any of the following custom field types: | Custom field type | Description | |-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| | text | Default custom field type when `type` is not specified | | textarea | For multi-line text | | checkbox | To capture a boolean value. Allowed values are true or false | | date | Example: 2021-04-16 | | integer | String composed of numbers. May contain an optional decimal point | | decimal | For numbers containing decimals | | regexp | Matches the Regex pattern found in the custom field settings | | partialcreditcard | A credit card number. Only the last 4 digits are retained | | multiselect | Enables users to choose multiple options from a dropdown menu | | tagger | Single-select dropdown menu. It contains one or more tag values belonging to the field's options. Example: ( {"id": 21938362, "value": ["hd_3000", "hd_5555"]}) | | lookup | A field to create a relationship (see [lookup relationships](https://developer.zendesk.com)) to another object such as a user, ticket, or organization | See [About custom field types](https://support.zendesk.com/hc/en-us/articles/203661866) in the Zendesk Help Center. #### Allowed For * Admins #### Field limits We recommend the following best practices for ticket fields limits. Creating more than these amounts can affect performance. * 400 ticket fields per account if your account doesn't have ticket forms * 400 ticket fields per ticket form if your account has ticket forms

operationId: TicketFields_createField

Responses

201 Created response
POST /api/v2/ticket_fields
GET /api/v2/ticket_fields/count

Returns an approximate count of system and custom ticket fields in the account. If the count exceeds 100,000, the count will return a cached result. This cached result will update every 24 hours. The `count[refreshed_at]` property is a timestamp that indicates when the count was last updated. **Note**: When the count exceeds 100,000, `count[refreshed_at]` may occasionally be null. This indicates that the count is being updated in the background, and `count[value]` is limited to 100,000 until the update is complete. #### Allowed For * Agents

operationId: TicketFields_count

Responses

200 Count of ticket fields
GET /api/v2/ticket_fields/count
DELETE /api/v2/ticket_fields/{ticket_field_id}

#### Allowed for * Admins

operationId: TicketFields_deleteField

Responses

204 No Content response
DELETE /api/v2/ticket_fields/{ticket_field_id}
GET /api/v2/ticket_fields/{ticket_field_id}

#### Allowed for * Agents #### Sideloads The following sideloads are supported: | Name | Will sideload | ---------------- | ------------- | users | The user or users that created the ticket field

operationId: TicketFields_showField

Responses

200 Success response
GET /api/v2/ticket_fields/{ticket_field_id}
PUT /api/v2/ticket_fields/{ticket_field_id}

#### Updating drop-down field options You can also use the update endpoint to add, update, or remove options in a drop-down custom field. Updating field options for multi-select fields works exactly the same as drop-down field options. **Important**: Unless you want to remove some options, you must specify all existing options in any update request. Omitting an option removes it from the drop-down field, which removes its values from any tickets or macros. Use the `custom_field_options` attribute to update the options. The attribute consists of an array of option objects, with each object consisting of a `name` and `value` property. The properties correspond to the "Title" and "Tag" text boxes in the admin interface. Example request body: ```json {"ticket_field": { "custom_field_options": [ {"name": "Apple Pie", "value": "apple"}, {"name": "Pecan Pie", "value": "pecan"} ] } } ``` #### Example Request ```bash curl https://{subdomain}.zendesk.com/api/v2/ticket_fields/{id}.json \ -d '{"ticket_field": {"custom_field_options": [{"name": "Apple Pie", "value": "apple"}, {"name": "Pecan Pie", "value": "pecan"}]}}' \ -H "Content-Type: application/json" -X PUT \ -v -u {email_address}:{password} ``` #### Example Response ```http Status: 200 OK { "ticket_field": { "id":21938362, "type":"tagger", "title":"Pies", ... "custom_field_options": [ { "id":21029772, "name":"Apple Pie", "raw_name":"Apple Pie", "value":"apple", "default":false }, ... ] } } ``` #### Allowed for * Admins

operationId: TicketFields_updateFieldOptions

Responses

200 Success response
PUT /api/v2/ticket_fields/{ticket_field_id}
GET /api/v2/ticket_fields/{ticket_field_id}/options

Returns a list of custom ticket field options for the given drop-down ticket field. #### Allowed For * Agents #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com).

operationId: TicketFields_listOptions

Responses

200 Success response
GET /api/v2/ticket_fields/{ticket_field_id}/options
POST /api/v2/ticket_fields/{ticket_field_id}/options

Creates or updates an option for the given drop-down ticket field. To update an option, include the id of the option in the `custom_field_option` object. Example: `{"custom_field_option": {"id": 10002, "name": "Pineapples", ... }` If an option exists for the given ID, the option will be updated. Otherwise, a new option will be created. #### Response Returns one of the following status codes: - 200 with `Location: /api/v2/ticket_fields/{ticket_field_id}/options.json` if the ticket field option already exists in the database - 201 with `Location: /api/v2/ticket_fields/{ticket_field_id}/options.json` if the ticket field option is new #### Allowed For * Admins #### Rate Limit You can make 100 requests every 1 minute using this endpoint. The rate limiting mechanism behaves as described in [Monitoring your request activity](/api-reference/ticketing/account-configuration/usage_limits/#monitoring-your-request-activity) in the API introduction. #### Field Option Limits * 2000 options per ticket field

operationId: TicketFields_createOrUpdateOption

Responses

200 Success response
201 Created response
POST /api/v2/ticket_fields/{ticket_field_id}/options
DELETE /api/v2/ticket_fields/{ticket_field_id}/options/{ticket_field_option_id}

#### Allowed for * Admins

operationId: TicketFields_deleteOption

Responses

204 No Content response
DELETE /api/v2/ticket_fields/{ticket_field_id}/options/{ticket_field_option_id}
GET /api/v2/ticket_fields/{ticket_field_id}/options/{ticket_field_option_id}

#### Allowed for * Agents

operationId: TicketFields_showOptionById

Responses

200 Success response
GET /api/v2/ticket_fields/{ticket_field_id}/options/{ticket_field_option_id}

Ticket forms 8 endpoints

GET /api/v2/ticket_forms

Returns a list of all ticket forms for your account if accessed as an admin or agent. End users only see ticket forms that have `end_user_visible` set to true. #### Allowed For * Anyone

operationId: TicketForms_listAllForms

Parameters

Name In Required Type Description
active query optional boolean true returns active ticket forms; false returns inactive ticket forms. If not present, returns both
end_user_visible query optional boolean true returns ticket forms where `end_user_visible`; false returns ticket forms that are not end-user visible. If not present, returns both
fallback_to_default query optional boolean true returns the default ticket form when the criteria defined by the parameters results in a set without active and end-user visible ticket forms
associated_to_brand query optional boolean true returns the ticket forms of the brand specified by the url's subdomain

Responses

200 Success response
GET /api/v2/ticket_forms
POST /api/v2/ticket_forms

#### Allowed For * Admins

operationId: TicketForms_createNewForm

Responses

201 Created response
POST /api/v2/ticket_forms
PUT /api/v2/ticket_forms/reorder

#### Allowed For * Admins #### Request Parameters You can pass in the following parameter in the payload: | Name | Type | Comment | ------------------- | ------ | -------- | ticket_form_ids | array | An array of ticket form ids. Example: "[2, 23, 46, 50]"

operationId: TicketForms_reorderForms

Responses

200 Success response
PUT /api/v2/ticket_forms/reorder
GET /api/v2/ticket_forms/show_many

Takes an `ids` query parameter that accepts a comma-separated list of up to 100 ticket form ids. This endpoint is used primarily by the [mobile SDK](https://developer.zendesk.com) and the [Web Widget](https://developer.zendesk.com). #### Allowed For * Anyone

operationId: TicketForms_getMany

Parameters

Name In Required Type Description
ids query required string IDs of the ticket forms to be shown
active query optional boolean true returns active ticket forms; false returns inactive ticket forms. If not present, returns both
end_user_visible query optional boolean true returns ticket forms where `end_user_visible`; false returns ticket forms that are not end-user visible. If not present, returns both
fallback_to_default query optional boolean true returns the default ticket form when the criteria defined by the parameters results in a set without active and end-user visible ticket forms
associated_to_brand query optional boolean true returns the ticket forms of the brand specified by the url's subdomain

Responses

200 Success response
GET /api/v2/ticket_forms/show_many
DELETE /api/v2/ticket_forms/{ticket_form_id}

#### Allowed For * Admins

operationId: TicketForms_deleteForm

Responses

204 No Content response
DELETE /api/v2/ticket_forms/{ticket_form_id}
GET /api/v2/ticket_forms/{ticket_form_id}

#### Allowed For * Admins, Agents, and End Users

operationId: TicketForms_showForm

Responses

200 Success response
GET /api/v2/ticket_forms/{ticket_form_id}
PUT /api/v2/ticket_forms/{ticket_form_id}

#### Allowed For * Admins

operationId: TicketForms_updateForm

Responses

200 Success response
PUT /api/v2/ticket_forms/{ticket_form_id}
POST /api/v2/ticket_forms/{ticket_form_id}/clone

#### Allowed For * Admins

operationId: TicketForms_cloneExistingForm

Responses

200 Success response
POST /api/v2/ticket_forms/{ticket_form_id}/clone

Ticket import 2 endpoints

POST /api/v2/imports/tickets

#### Allowed For * Admins

operationId: TicketImport_executeTicketImport

Parameters

Name In Required Type Description
optional

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TicketImportRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/TicketImportRequestExample"
        }
      }
    }
  }
}

Responses

201 Successfully created
POST /api/v2/imports/tickets
POST /api/v2/imports/tickets/create_many

Accepts an array of up to 100 ticket objects. #### Allowed For * Admins

operationId: TicketImport_bulkCreateMany

Parameters

Name In Required Type Description
optional

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TicketBulkImportRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/TicketBulkImportRequestExample"
        }
      }
    }
  }
}

Responses

200 Successful response
POST /api/v2/imports/tickets/create_many

Ticket metric events 1 endpoints

GET /api/v2/incremental/ticket_metric_events

Returns ticket metric events that occurred on or after the start time. Cursor pagination returns a maximum of 100 records per page. Events are listed in chronological order. If the results are not paginated, events will be returned as a time-based incremental export. See [Time-based incremental exports](/documentation/ticketing/managing-tickets/using-the-incremental-export-api#time-based-incremental-exports). #### Pagination * Cursor pagination See [Pagination](https://developer.zendesk.com). #### Allowed For * Admins

operationId: TicketMetricEvents_list

Parameters

Name In Required Type Description
start_time query required integer The Unix UTC epoch time of the oldest event you're interested in. Example: 1332034771.

Responses

200 Successful response
GET /api/v2/incremental/ticket_metric_events

Ticket metrics 2 endpoints

GET /api/v2/ticket_metrics

Returns a list of tickets with their metrics. Tickets are ordered chronologically by created date, from newest to oldest. The last ticket listed may not be the absolute oldest ticket in your account due to ticket archiving. Archived tickets are not included in the response. See [About archived tickets](https://support.zendesk.com/hc/en-us/articles/203657756) in Zendesk help. #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents

operationId: TicketMetrics_listMetrics

Responses

200 Success response
GET /api/v2/ticket_metrics
GET /api/v2/ticket_metrics/{ticket_metric_id}

Returns a specific metric, or the metrics of a specific ticket. #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents

operationId: TicketMetrics_showSpecificMetric

Parameters

Name In Required Type Description
ticket_metric_id path required string The id of the ticket metric to retrieve

Responses

200 Success response
GET /api/v2/ticket_metrics/{ticket_metric_id}

Ticket skips 2 endpoints

POST /api/v2/skips

Record a new ticket skip for the current user. #### Allowed For * Agents

operationId: TicketSkips_recordNewSkip

Responses

201 Success response
POST /api/v2/skips
GET /api/v2/users/{user_id}/skips

Archived tickets are not included in the response. See [About archived tickets](https://support.zendesk.com/hc/en-us/articles/203657756) in the Support Help Center. #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents with "View only" or higher reports permissions in Support. These permissions are distinct from Explore permissions. * Agents retrieving their own skips

operationId: TicketSkips_list

Responses

200 Success response
GET /api/v2/users/{user_id}/skips

Tickets 25 endpoints

GET /api/v2/deleted_tickets

Returns a maximum of 100 deleted tickets per page. See [Pagination](https://developer.zendesk.com). The results includes all deleted (and not yet archived) tickets that have not yet been [scrubbed](https://support.zendesk.com/hc/en-us/articles/4408845703194#topic_fv5_w51_sdb) in the past 30 days. Archived tickets are not included in the results. See [About archived tickets](https://support.zendesk.com/hc/en-us/articles/203657756) in the Support Help Center. The tickets are ordered chronologically by created date, from oldest to newest. The first ticket listed may not be the oldest ticket in your account due to [ticket archiving](https://support.zendesk.com/hc/en-us/articles/203657756). #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents #### Rate Limit You can make 10 requests every 1 minute using this endpoint. When making requests beyond page 100, you can make 5 requests every 1 minute. The rate limiting mechanism behaves as described in [Monitoring your request activity](/api-reference/ticketing/account-configuration/usage_limits/#monitoring-your-request-activity) in the API introduction.

operationId: Tickets_listDeleted

Parameters

Name In Required Type Description
optional
optional

Responses

200 Successful response
GET /api/v2/deleted_tickets
DELETE /api/v2/deleted_tickets/destroy_many

Permanently deletes up to 100 soft-deleted tickets. See [Soft delete](https://support.zendesk.com/hc/en-us/articles/4408834005530#topic_zrm_wbj_1db) in the Zendesk GDPR docs. To soft delete tickets, use the [Bulk Delete Tickets](https://developer.zendesk.com) endpoint. This endpoint accepts a comma-separated list of up to 100 ticket ids. It enqueues a ticket deletion job and returns a payload with the jobs status. If one ticket fails to be deleted, the endpoint still attempts to delete the others. If the job succeeds, the tickets that were successfully deleted are permanently deleted. This operation can't be undone. This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information. #### Allowed For * Agents

operationId: Tickets_deleteMany

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
DELETE /api/v2/deleted_tickets/destroy_many
PUT /api/v2/deleted_tickets/restore_many

#### Allowed For * Agents

operationId: Tickets_restoreBulkTickets

Parameters

Name In Required Type Description
optional

Responses

200 Empty response
PUT /api/v2/deleted_tickets/restore_many
DELETE /api/v2/deleted_tickets/{ticket_id}

Permanently deletes a soft-deleted ticket. See [Soft delete](https://support.zendesk.com/hc/en-us/articles/4408834005530#topic_zrm_wbj_1db) in the Zendesk GDPR docs. To soft delete a ticket, use the [Delete Ticket](https://developer.zendesk.com) endpoint. This endpoint enqueues a ticket deletion job and returns a payload with the jobs status. If the job succeeds, the ticket is permanently deleted. This operation can't be undone. This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. #### Allowed For * Agents

operationId: Tickets_deletePermanently

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
DELETE /api/v2/deleted_tickets/{ticket_id}
PUT /api/v2/deleted_tickets/{ticket_id}/restore

#### Allowed For * Agents

operationId: Tickets_restoreTicket

Parameters

Name In Required Type Description
optional

Responses

200 Empty response
PUT /api/v2/deleted_tickets/{ticket_id}/restore
GET /api/v2/problems

The response is always ordered by `updated_at` in descending order #### Allowed For * Agents #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com).

operationId: Tickets_listProblems

Responses

200 Successful response
GET /api/v2/problems
POST /api/v2/problems/autocomplete

Returns tickets whose type is "problem" and whose subject contains the string specified in the `text` parameter. You can specify the `text` parameter in the request body rather than the query string. Example: `{"text": "fire"}` #### Allowed For * Agents

operationId: Tickets_autocompleteProblems

Parameters

Name In Required Type Description
text query optional string The text to search for

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TicketsAutocompleteProblemsRequest"
      },
      "example": {
        "text": "fire"
      }
    }
  }
}

Responses

200 Successful response
POST /api/v2/problems/autocomplete
GET /api/v2/tickets
operationId: Tickets_list

Parameters

Name In Required Type Description
external_id query optional string Lists tickets by external id. External ids don't have to be unique for each ticket. As a result, the request may return multiple tickets with the same external id.

Responses

200 List tickets
GET /api/v2/tickets
POST /api/v2/tickets
operationId: Tickets_createNewTicket

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TicketCreateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/TicketCreateRequestExample"
        }
      }
    }
  }
}

Responses

201 Create ticket
POST /api/v2/tickets
GET /api/v2/tickets/count

Returns an approximate count of tickets in the account. If the count exceeds 100,000, it is updated every 24 hours. `ccd` lists tickets that the specified user is cc'd on. The `count[refreshed_at]` property is a timestamp that indicates when the count was last updated. **Note**: When the count exceeds 100,000, `count[refreshed_at]` may occasionally be null. This indicates that the count is being updated in the background, and `count[value]` is limited to 100,000 until the update is complete. #### Allowed For * Agents

operationId: Tickets_countTickets

Responses

200 Count of tickets
GET /api/v2/tickets/count
POST /api/v2/tickets/create_many

Accepts an array of up to 100 ticket objects. **Note**: Every ticket created with this endpoint may be affected by your business rules, which can include sending email notifications to your end users. If you are importing historical tickets or creating more than 1000 tickets, consider using the [Ticket Bulk Import](/api-reference/ticketing/tickets/ticket_import/#ticket-bulk-import) endpoint. This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information. #### Allowed For * Agents

operationId: Tickets_createMany

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TicketsCreateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/TicketsCreateRequestExample"
        }
      }
    }
  }
}

Responses

200 Create many tickets
POST /api/v2/tickets/create_many
DELETE /api/v2/tickets/destroy_many

Accepts a comma-separated list of up to 100 ticket ids. #### Allowed For * Admins * Agents with permission to delete tickets Agent delete permissions are set in Support. See [Deleting tickets](https://support.zendesk.com/hc/en-us/articles/203690936) in the Support Help Center. This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information.

operationId: Tickets_bulkDelete

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
DELETE /api/v2/tickets/destroy_many
PUT /api/v2/tickets/mark_many_as_spam

Accepts a comma-separated list of up to 100 ticket ids. This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information. #### Allowed For * Agents

operationId: Tickets_markManyAsSpam

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
PUT /api/v2/tickets/mark_many_as_spam
GET /api/v2/tickets/show_many

Accepts a comma-separated list of ticket ids to return. This endpoint will return up to 100 tickets records. #### Allowed For * Agents

operationId: Tickets_showMany

Parameters

Name In Required Type Description
optional

Responses

200 List tickets
GET /api/v2/tickets/show_many
PUT /api/v2/tickets/update_many

Accepts an array of up to 100 ticket objects, or a comma-separated list of up to 100 ticket ids.

operationId: Tickets_updateMany

Parameters

Name In Required Type Description
ids query optional string Comma-separated list of ticket ids

Responses

200 Successful response
PUT /api/v2/tickets/update_many
DELETE /api/v2/tickets/{ticket_id}

#### Allowed For * Admins * Agents with permission to delete tickets Agent delete permissions are set in Support. See [Deleting tickets](https://support.zendesk.com/hc/en-us/articles/203690936) in the Support Help Center. #### Ticket deletion rate limit You can delete 400 tickets every 1 minute using this endpoint. The rate limiting mechanism behaves as described in [Rate limits](https://developer.zendesk.com) in the API introduction. Zendesk recommends that you obey the Retry-After header values. To delete many tickets, you may use [Bulk Delete Tickets](/api-reference/ticketing/tickets/tickets/#bulk-delete-tickets).

operationId: Tickets_deleteTicket

Parameters

Name In Required Type Description
optional

Responses

204 No content
DELETE /api/v2/tickets/{ticket_id}
GET /api/v2/tickets/{ticket_id}

Returns a number of ticket properties though not the ticket comments. To get the comments, use [List Comments](/api-reference/ticketing/tickets/ticket_comments/#list-comments) #### Allowed For * Agents

operationId: Tickets_showTicketDetails

Parameters

Name In Required Type Description
optional

Responses

200 Ticket
GET /api/v2/tickets/{ticket_id}
PUT /api/v2/tickets/{ticket_id}
operationId: Tickets_updateTicket

Parameters

Name In Required Type Description
optional

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TicketUpdateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/TicketUpdateRequestExample"
        }
      }
    }
  }
}

Responses

200 Successful request
PUT /api/v2/tickets/{ticket_id}
GET /api/v2/tickets/{ticket_id}/collaborators

#### Allowed For * Agents

operationId: Tickets_listCollaborators

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
GET /api/v2/tickets/{ticket_id}/collaborators
GET /api/v2/tickets/{ticket_id}/email_ccs

Returns any users cc'd on the ticket. #### Availability The [CCs and Followers](https://support.zendesk.com/hc/en-us/articles/203690846) feature must be enabled in Zendesk Support. If the feature is not enabled, the default CC functionality is used. In that case, use [List Collaborators](/api-reference/ticketing/tickets/tickets/#list-collaborators-for-a-ticket) to list the users cc'ed on the ticket. #### Allowed For * Agents

operationId: Tickets_getEmailCCs

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
GET /api/v2/tickets/{ticket_id}/email_ccs
GET /api/v2/tickets/{ticket_id}/followers

Returns any users who follow the ticket. #### Availability The [CCs and Followers](https://support.zendesk.com/hc/en-us/articles/203690846) feature must be enabled in Zendesk Support. #### Allowed For * Agents

operationId: Tickets_listFollowers

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
GET /api/v2/tickets/{ticket_id}/followers
GET /api/v2/tickets/{ticket_id}/incidents

#### Allowed For * Agents #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com).

operationId: Tickets_listIncidents

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
GET /api/v2/tickets/{ticket_id}/incidents
PUT /api/v2/tickets/{ticket_id}/mark_as_spam

#### Allowed For * Agents

operationId: Tickets_markAsSpamAndSuspendRequester

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
PUT /api/v2/tickets/{ticket_id}/mark_as_spam
POST /api/v2/tickets/{ticket_id}/merge

Merges one or more tickets into the ticket with the specified id. See [Merging tickets](https://support.zendesk.com/hc/en-us/articles/203690916) in the Support Help Center for ticket merging rules. Any attachment to the source ticket is copied to the target ticket. This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information. #### Allowed For * Agents Agents in the Enterprise account must have merge permissions. See [Creating custom roles and assigning agents (Enterprise)](https://support.zendesk.com/hc/en-us/articles/203662026) in the Support Help Center. #### Available parameters The request takes a data object with the following properties: | Name | Type | Required | Comments | | ------------------------ | ------- | -------- | ------------------------------------------------------- | | ids | array | yes | Ids of tickets to merge into the target ticket | | target_comment | string | no | Private comment to add to the target ticket. This comment is optional but strongly recommended | | source_comment | string | no | Private comment to add to the source ticket. This comment is optional but strongly recommended | | target_comment_is_public | boolean | no | Whether comments in the target ticket are public or private | | source_comment_is_public | boolean | no | Whether comments in the source tickets are public or private | `target_comment` and `source_comment` can be used to provide a reason for the merge for recordkeeping purposes. If the source ticket has attachments, they are included in `target_comment`. Comments are private and can't be modified in the following cases: * Any of the sources or target tickets are private * Any of the sources or target tickets were created through X (formerly Twitter), Facebook or the Channel framework In any other case, comments default to private but can be modified with the comment privacy parameters.

operationId: Tickets_mergeIntoTarget

Parameters

Name In Required Type Description
optional

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TicketMergeInput"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/TicketMergeInputExample"
        }
      }
    }
  }
}

Responses

200 Successful response
POST /api/v2/tickets/{ticket_id}/merge
GET /api/v2/tickets/{ticket_id}/related

The request returns a data object with the following properties: | Name | Type | Comment | ------------------- | ------- | ------- | topic_id | string | Related topic in the Web portal (deprecated feature) | followup_source_ids | array | Sources to follow up | from_archive | boolean | Is true if the current ticket is archived | incidents | integer | A count of related incident occurrences | twitter | object | X (formerly Twitter) information associated with the ticket #### Allowed For * Agents

operationId: Tickets_getRelatedInfo

Parameters

Name In Required Type Description
optional

Responses

200 Successful response
GET /api/v2/tickets/{ticket_id}/related

Trigger categories 6 endpoints

GET /api/v2/trigger_categories

Returns all the trigger categories in the account. #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com).

operationId: TriggerCategories_getList

Parameters

Name In Required Type Description
page query optional object Pagination parameters
sort query optional string Sort parameters
include query optional string Allowed sideloads

Responses

200 A paged array of trigger categories
400 Error
403 Error
GET /api/v2/trigger_categories
POST /api/v2/trigger_categories

Creates a trigger category.

operationId: TriggerCategories_createCategory

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TriggerCategoriesCreateCategoryRequest"
      },
      "example": {
        "trigger_category": {
          "name": "All Notification Triggers",
          "position": 0
        }
      }
    }
  },
  "required": true
}

Responses

200 The created trigger category
400 Error
403 Error
POST /api/v2/trigger_categories
POST /api/v2/trigger_categories/jobs

Creates a job that performs a batch operation for the given trigger categories.

operationId: TriggerCategories_createBatchJob

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/BatchJobRequest"
      },
      "example": {
        "job": {
          "items": {
            "triggers": [
              {
                "id": "10011",
                "active": false,
                "position": 10,
                "category_id": "10001"
              },
              {
                "id": "10012",
                "active": true,
                "position": 1,
                "category_id": "10002"
              }
            ],
            "trigger_categories": [
              {
                "id": "10001X",
                "position": 0
              },
              {
                "id": "10002X",
                "position": 1
              }
            ]
          },
          "action": "patch"
        }
      }
    }
  },
  "required": true
}

Responses

200 The response to the batch job
400 Error
POST /api/v2/trigger_categories/jobs
DELETE /api/v2/trigger_categories/{trigger_category_id}

Deletes the trigger category with the specified ID.

operationId: TriggerCategories_deleteById

Parameters

Name In Required Type Description
trigger_category_id path required string The id of the trigger category to delete

Responses

204 No content
400 Error
404 Error
DELETE /api/v2/trigger_categories/{trigger_category_id}
GET /api/v2/trigger_categories/{trigger_category_id}

Returns the trigger category with the specified ID.

operationId: TriggerCategories_showById

Parameters

Name In Required Type Description
trigger_category_id path required string The id of the trigger category to retrieve

Responses

200 The requested trigger category
404 Error
GET /api/v2/trigger_categories/{trigger_category_id}
PATCH /api/v2/trigger_categories/{trigger_category_id}

Updates the trigger category with the specified ID.

operationId: TriggerCategories_updateCategoryById

Parameters

Name In Required Type Description
trigger_category_id path required string The id of the trigger category to update

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TriggerCategoriesUpdateCategoryByIdRequest"
      },
      "example": {
        "trigger_category": {
          "name": "All Notification Triggers Updated",
          "position": 10
        }
      }
    }
  },
  "required": true
}

Responses

200 The updated trigger category
400 Error
404 Error
PATCH /api/v2/trigger_categories/{trigger_category_id}

Triggers 13 endpoints

GET /api/v2/triggers

Lists all triggers for the current account. #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents #### Sideloads The following sideloads are supported. The usage sideloads are only supported on the Support Professional or Suite Growth plan or above. | Name | Will sideload | ---------------- | ------------- | app_installation | The app installation that requires each trigger, if present | permissions | The permissions for each trigger | usage_1h | The number of times each trigger has been used in the past hour | usage_24h | The number of times each trigger has been used in the past day | usage_7d | The number of times each trigger has been used in the past week | usage_30d | The number of times each trigger has been used in the past thirty days

operationId: Triggers_list

Parameters

Name In Required Type Description
optional
optional
optional
optional
optional

Responses

200 Success response
GET /api/v2/triggers
POST /api/v2/triggers

#### Allowed For * Agents

operationId: Triggers_createNewTrigger

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TriggerWithCategoryRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/TriggerWithCategoryRequestExample"
        }
      }
    }
  },
  "required": true
}

Responses

201 Created response
POST /api/v2/triggers
GET /api/v2/triggers/active

Lists all active triggers. #### Pagination - Cursor pagination (recommended) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents #### Sideloads The following sideloads are supported: | Name | Will sideload | ---------------- | ------------- | app_installation | The app installation that requires each trigger, if present | permissions | The permissions for each trigger | usage_1h | The number of times each trigger has been used in the past hour | usage_24h | The number of times each trigger has been used in the past day | usage_7d | The number of times each trigger has been used in the past week | usage_30d | The number of times each trigger has been used in the past thirty days

operationId: Triggers_listActiveTriggers

Responses

200 Success response
GET /api/v2/triggers/active
GET /api/v2/triggers/definitions

Returns the definitions of the actions a trigger can perform and the definitions of the conditions under which a trigger can execute. The definition of the action includes a title ("Status"), a type ("list"), and possible values. The definition of the condition includes the same fields as well as the possible operators. For a list of supported actions, see the [Actions reference](https://developer.zendesk.com) For a list of supported conditions, see the [Conditions reference](https://developer.zendesk.com) #### Allowed For * Agents

operationId: Triggers_listDefinitions

Responses

200 Success response
GET /api/v2/triggers/definitions
DELETE /api/v2/triggers/destroy_many

Deletes the triggers corresponding to the provided comma-separated list of IDs. #### Allowed For * Agents #### Request Parameters The DELETE request takes one parameter, an `ids` object that lists the triggers to delete. | Name | Description | ---- | ----------- | ids | The IDs of the triggers to delete #### Example request ```js { "ids": "25,23,27,22" } ```

operationId: Triggers_bulkDelete

Responses

204 No content response
DELETE /api/v2/triggers/destroy_many
PUT /api/v2/triggers/reorder

Alters the firing order of triggers in the account. See [Reordering and sorting triggers](https://support.zendesk.com/hc/en-us/articles/115015696088) in the Zendesk Help Center. The firing order is set in a `trigger_ids` array in the request body. You must include every trigger id in your account to reorder the triggers. If not, the endpoint will return 404 Forbidden. Reordering triggers via the API is not permitted if you have more than one trigger category. If there is more than one trigger category, the endpoint will return a `LimitOneCategory` error. #### Allowed For * Agents

operationId: Triggers_reorderFiringOrder

Responses

200 Success response
PUT /api/v2/triggers/reorder
GET /api/v2/triggers/search

#### Pagination * Offset pagination only See [Using Offset Pagination](/api-reference/ticketing/introduction/#using-offset-pagination). #### Allowed For * Agents #### Sideloads The following sideloads are supported. For more information, see [Side-loading](https://developer.zendesk.com). | Name | Will sideload | ---------------- | ------------- | app_installation | The app installation that requires each trigger, if present | permissions | The permissions for each trigger | usage_1h | The number of times each trigger has been used in the past hour | usage_24h | The number of times each trigger has been used in the past day | usage_7d | The number of times each trigger has been used in the past week | usage_30d | The number of times each trigger has been used in the past thirty days #### Filter Use the `filter` query parameter to filter a trigger search by one or more attributes. For example, the following `filter` argument filters triggers by the `description` attribute: ```json { "json": { "description": "Close a ticket" } } ```

operationId: Triggers_searchGet

Responses

200 Success response
GET /api/v2/triggers/search
PUT /api/v2/triggers/update_many

Updates the position or the active status of multiple triggers. Any additional properties are ignored. #### Allowed For * Agents #### Request Parameters The PUT request expects a `triggers` object that lists the triggers to update. Each trigger may have the following properties: | Name | Mandatory | Description | -------- | --------- | ----------- | id | yes | The ID of the trigger to update | position | no | The new position of the trigger | active | no | The active status of the trigger (true or false) | category_id | no | The ID of the new category the trigger is to be moved to #### Example Request ```js { "triggers": [ {"id": 25, "position": 3}, {"id": 23, "position": 5}, {"id": 27, "position": 9}, {"id": 22, "position": 7} ] } ```

operationId: Triggers_updateManyPositionStatus

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TriggerBulkUpdateRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/TriggerBulkUpdateRequestExample"
        }
      }
    }
  },
  "required": true
}

Responses

200 Success response
PUT /api/v2/triggers/update_many
DELETE /api/v2/triggers/{trigger_id}

#### Allowed For * Agents

operationId: Triggers_deleteTrigger

Responses

204 No Content response
DELETE /api/v2/triggers/{trigger_id}
GET /api/v2/triggers/{trigger_id}

#### Allowed For * Agents The Via Type value is a number instead of a text string. See [Via types reference](https://developer.zendesk.com) for the keys.

operationId: Triggers_showTrigger

Responses

200 Success response
GET /api/v2/triggers/{trigger_id}
PUT /api/v2/triggers/{trigger_id}

#### Allowed For * Agents #### Note Updating a condition or action updates both the conditions and actions arrays, clearing all existing values of both arrays. Include all your conditions and actions when updating any condition or action.

operationId: Triggers_updateTrigger

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/TriggerWithCategoryRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/TriggerWithCategoryRequestExample"
        }
      }
    }
  },
  "required": true
}

Responses

200 Success response
PUT /api/v2/triggers/{trigger_id}
GET /api/v2/triggers/{trigger_id}/revisions

List the revisions associated with a trigger. Trigger revision history is only available on Enterprise plans. #### Allowed For * Agents #### Sideloads The following sideloads are supported: | Name | Will sideload | ----- | ------------- | users | The user that authored each revision #### Pagination This endpoint uses cursor-based pagination. The records are ordered in descending order by the `created_at` timestamp, then by `id` on duplicate `created_at` values. The `cursor` parameter is a non-human-readable argument you can use to move forward or backward in time. Each JSON response will contain the following attributes to help you get more results: - `after_url` requests more recent results - `before_url` requests older results - `after_cursor` is the cursor to build the request yourself - `before_cursor` is the cursor to build the request yourself The properties are null if no more records are available. You can request a maximum of 1000 records using the `limit` parameter. If no `limit` parameter is supplied, it will default to 1,000.

operationId: Triggers_listRevisions

Responses

200 Success response
GET /api/v2/triggers/{trigger_id}/revisions
GET /api/v2/triggers/{trigger_id}/revisions/{trigger_revision_id}

Fetches a revision associated with a trigger. Trigger revision history is only available on Enterprise plans. #### Allowed For * Agents #### Sideloads The following sideloads are supported: | Name | Will sideload | ----- | ------------- | users | The user that authored each revision

operationId: Triggers_showRevision

Responses

200 Success response
GET /api/v2/triggers/{trigger_id}/revisions/{trigger_revision_id}

User fields 10 endpoints

GET /api/v2/user_fields

Returns a list of custom user fields in your account. Fields are returned in the order that you specify in your user fields configuration in Zendesk Support. Clients should cache this resource for the duration of their API usage and map the key for each User Field to the values returned under the `user_fields` attribute on the [User](https://developer.zendesk.com) resource. #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents

operationId: UserFields_list

Responses

200 Success response
GET /api/v2/user_fields
POST /api/v2/user_fields

Creates any of the following custom field types: * text (default when no "type" is specified) * textarea * checkbox * date * integer * decimal * regexp * dropdown * lookup See [About custom field types](https://support.zendesk.com/hc/en-us/articles/203661866) in Zendesk help. #### Allowed For * Admins

operationId: UserFields_createField

Responses

201 Created response
POST /api/v2/user_fields
PUT /api/v2/user_fields/reorder

#### Allowed For * Admins

operationId: UserFields_reorderField

Responses

200 Success response
PUT /api/v2/user_fields/reorder
DELETE /api/v2/user_fields/{user_field_id}

#### Allowed for * Admins

operationId: UserFields_deleteField

Responses

204 No Content response
DELETE /api/v2/user_fields/{user_field_id}
GET /api/v2/user_fields/{user_field_id}

#### Allowed for * Agents

operationId: UserFields_showField

Responses

200 Success response
GET /api/v2/user_fields/{user_field_id}
PUT /api/v2/user_fields/{user_field_id}

#### Updating a Dropdown (Tagger) Field Dropdown fields return an array of `custom_field_options` which specify the name, value and order of the list of dropdown options. Understand the following behavior when updating a dropdown field: - All options must be passed on update. Options that are not passed will be removed. As a result, these values will be removed from any organizations. - To create a new option, pass a null `id` along with `name` and `value`. - To update an existing option, pass its `id` along with `name` and `value`. - To re-order an option, reposition it in the `custom_field_options` array relative to the other options. - To remove an option, omit it from the list of options upon update. #### Example Request ```bash curl https://{subdomain}.zendesk.com/api/v2/user_fields/{user_field_id}.json \ -H "Content-Type: application/json" -X PUT \ -d '{"user_field": {"custom_field_options": [{"id": 124, "name": "Option 2", "value": "option_2"}, {"id": 123, "name": "Option 1", "value": "option_1"}, {"id": 125, "name": "Option 2", "value": "option_3"}]}}' \ -v -u {email_address}:{password} ``` #### Allowed for * Admins

operationId: UserFields_updateCustomFieldOptions

Responses

200 Success response
PUT /api/v2/user_fields/{user_field_id}
GET /api/v2/user_fields/{user_field_id}/options

Returns a list of custom user field options for the given dropdown user field. #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents

operationId: UserFields_listOptions

Responses

200 Success response
GET /api/v2/user_fields/{user_field_id}/options
POST /api/v2/user_fields/{user_field_id}/options

Creates a new option or updates an existing option for the given drop-down user field. To update an option, include the id of the option in the `custom_field_option` object. Example: `{"custom_field_option": {"id": 10002, "name": "Pineapples", ... }`. If an option exists for the given ID, the option will be updated. Otherwise, a new option will be created. #### Response Returns one of the following status codes: - 200 with `Location: /api/v2/user_fields/{user_field_id}/options.json` if the user field option already exists in the database - 201 with `Location: /api/v2/user_fields/{user_field_id}/options.json` if the user field option is new #### Allowed For * Admins

operationId: UserFields_createOrUpdateOption

Responses

200 Success response
201 Created response
POST /api/v2/user_fields/{user_field_id}/options
DELETE /api/v2/user_fields/{user_field_id}/options/{user_field_option_id}

#### Allowed for * Admins

operationId: UserFields_deleteOptionById

Responses

204 No Content response
DELETE /api/v2/user_fields/{user_field_id}/options/{user_field_option_id}
GET /api/v2/user_fields/{user_field_id}/options/{user_field_option_id}

#### Allowed for * Agents

operationId: UserFields_showOptionById

Responses

200 Success response
GET /api/v2/user_fields/{user_field_id}/options/{user_field_option_id}

User identities 8 endpoints

GET /api/v2/users/{user_id}/identities

Returns a list of identities for the given user. Use the first endpoint if authenticating as an agent. Use the second if authenticating as an end user. End users can only list email and phone number identities. #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents * Verified end users

operationId: UserIdentities_list

Responses

200 Success response
GET /api/v2/users/{user_id}/identities
POST /api/v2/users/{user_id}/identities

Adds an identity to a user's profile. An agent can add an identity to any user profile. Supported identity types: | Type | Example | | ---------------- | ------- | | email | `{ "type" : "email", "value" : "someone@example.com" }` | | twitter | `{ "type" : "twitter", "value" : "screen_name" }` | | facebook | `{ "type" : "facebook", "value" : "855769377321" }` | | google | `{ "type" : "google", "value" : "example@gmail.com" }` | | agent_forwarding | `{ "type" : "agent_forwarding", "value" : "+1 555-123-4567" }` | | phone_number | `{ "type" : "phone_number", "value" : "+1 555-123-4567" }` | To create an identity without sending out a verification email, include a `"skip_verify_email": true` property. #### Allowed For * Agents

operationId: UserIdentities_addIdentityToUser

Responses

201 Created response
POST /api/v2/users/{user_id}/identities
DELETE /api/v2/users/{user_id}/identities/{user_identity_id}

Deletes the identity for a given user. In certain cases, a phone number associated with an identity is still visible on the user profile after the identity has been deleted via API. You can remove the phone number from the user profile by updating the `phone` attribute of the user to an empty string. See [Update User via API](/api-reference/ticketing/users/users/#update-user) for details and examples. #### Allowed For * Agents

operationId: UserIdentities_deleteIdentity

Responses

204 No Content response
DELETE /api/v2/users/{user_id}/identities/{user_identity_id}
GET /api/v2/users/{user_id}/identities/{user_identity_id}

Shows the identity with the given id for a given user. Use the first endpoint if authenticating as an agent. Use the second if authenticating as an end user. End users can only view email or phone number identity. #### Allowed For * Agents * Verified end users

operationId: UserIdentities_showIdentity

Responses

200 Success response
GET /api/v2/users/{user_id}/identities/{user_identity_id}
PUT /api/v2/users/{user_id}/identities/{user_identity_id}

This endpoint allows you to: * Set the specified identity as verified (but you cannot unverify a verified identity) * Update the `value` property of the specified identity You can't change an identity's `primary` attribute with this endpoint. You must use the [Make Identity Primary](https://developer.zendesk.com) endpoint instead. #### Allowed For * Agents

operationId: UserIdentities_updateIdentity

Responses

200 Success response
PUT /api/v2/users/{user_id}/identities/{user_identity_id}
PUT /api/v2/users/{user_id}/identities/{user_identity_id}/make_primary

Sets the specified identity as primary. To change other attributes, use the [Update Identity](https://developer.zendesk.com) endpoint. This is a collection-level operation and the correct behavior for an API client is to subsequently reload the entire collection. The first endpoint is the preferred option if authenticating as an agent. If authenticating as an end user, you can only use the second endpoint. In addition, an end user can only make an email identity primary if the email is verified. #### Allowed For * Agents * Verified end users

operationId: UserIdentities_makePrimary

Responses

200 Success response
PUT /api/v2/users/{user_id}/identities/{user_identity_id}/make_primary
PUT /api/v2/users/{user_id}/identities/{user_identity_id}/request_verification

Sends the user a verification email with a link to verify ownership of the email address. #### Allowed For * Agents

operationId: UserIdentities_requestVerificationEmail

Responses

200 Success description
PUT /api/v2/users/{user_id}/identities/{user_identity_id}/request_verification
PUT /api/v2/users/{user_id}/identities/{user_identity_id}/verify

Sets the specified identity as verified. For security reasons, you can't use this endpoint to update the email identity of the account owner. To verify the person's identity, send a verification email. See [Verifying the account owner's email address](https://support.zendesk.com/hc/en-us/articles/4408828975130) in Zendesk help. #### Allowed For * Agents

operationId: UserIdentities_verifyIdentity

Responses

200 Success response
PUT /api/v2/users/{user_id}/identities/{user_identity_id}/verify

User passwords 3 endpoints

POST /api/v2/users/{user_id}/password

An admin can set a user's password only if the setting is enabled in Zendesk Support under **Settings** > **Security** > **Global**. The setting is off by default. Only the account owner can access and change this setting. [API token](https://support.zendesk.com/hc/en-us/articles/4408831452954-How-can-I-authenticate-API-requests#h_01HT5BS5HV15B7R6Q3B67M4SQW) authentication is not permitted on this endpoint. #### Allowed For * Admins

operationId: UserPasswords_setNewPassword

Responses

200 Success description
POST /api/v2/users/{user_id}/password
PUT /api/v2/users/{user_id}/password

You can only change your own password. Nobody can change the password of another user because it requires knowing the user's existing password. However, an admin can set a new password for another user without knowing the existing password. See [Set a User's Password](https://developer.zendesk.com) above. [API token](https://support.zendesk.com/hc/en-us/articles/4408831452954-How-can-I-authenticate-API-requests#h_01HT5BS5HV15B7R6Q3B67M4SQW) authentication is not permitted on this endpoint. #### Allowed For * Agents * End Users

operationId: UserPasswords_changePassword

Responses

200 Success description
PUT /api/v2/users/{user_id}/password
GET /api/v2/users/{user_id}/password/requirements

#### Allowed For * Agents * End Users

operationId: UserPasswords_listRequirements

Responses

200 Success response
GET /api/v2/users/{user_id}/password/requirements

Users 24 endpoints

GET /api/v2/deleted_users

Returns deleted users, including permanently deleted users. If the results contains permanently deleted users, the users' properties that normally contain personal data, such as `email` and `phone`, are null. The `name` property is "Permanently Deleted User". #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents

operationId: Users_listDeleted

Responses

200 Success response
GET /api/v2/deleted_users
GET /api/v2/deleted_users/count

Returns an approximate count of deleted users, including permanently deleted users. If the count exceeds 100,000, it is updated every 24 hours. The response includes a `refreshed_at` property in a `count` object that contains a timestamp indicating when the count was last updated. **Note**: When the count exceeds 100,000, `count[refreshed_at]` may occasionally be null. This indicates that the count is being updated in the background, and `count[value]` is limited to 100,000 until the update is complete. #### Allowed For * Agents

operationId: Users_countDeleted

Responses

200 Success response
GET /api/v2/deleted_users/count
DELETE /api/v2/deleted_users/{deleted_user_id}

Before permanently deleting a user, you must delete the user first. See [Delete User](/api-reference/ticketing/users/users/#delete-user). WARNING: Permanently deleting a user deletes all of their information. This information is not recoverable. #### Permanent user deletion rate limit You can permanently delete 700 users every 10 minutes. The rate limiting mechanism behaves as described in [Rates Limits](/api-reference/introduction/rate-limits/#monitoring-your-request-activity) in the API introduction. Zendesk recommends that you obey the Retry-After header values. #### Allowed For * Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage end users or team members

operationId: Users_permanentlyDelete

Responses

200 Success response
DELETE /api/v2/deleted_users/{deleted_user_id}
GET /api/v2/deleted_users/{deleted_user_id}

Returns users that have been deleted but not permanently yet. See [Permanently Delete User](https://developer.zendesk.com). #### Allowed For: * Agents

operationId: Users_getDeletedUser

Responses

200 Success response
GET /api/v2/deleted_users/{deleted_user_id}
GET /api/v2/users

#### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Admins, Agents and Light Agents

operationId: Users_list

Parameters

Name In Required Type Description
optional
optional
optional
optional

Responses

200 Success response
GET /api/v2/users
POST /api/v2/users
operationId: Users_createNewUser

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UserRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/UserRequestExample"
        }
      }
    }
  },
  "required": true
}

Responses

201 Created response
POST /api/v2/users
GET /api/v2/users/autocomplete

Returns an array of users whose name starts with the value specified in the `name` parameter. It only returns users with no foreign identities. #### Allowed For * Agents

operationId: Users_autocompleteList

Parameters

Name In Required Type Description
name query required string The name to search for the user.
optional
optional

Responses

200 Success response
GET /api/v2/users/autocomplete
GET /api/v2/users/count

Returns an approximate count of users. If the count exceeds 100,000, it is updated every 24 hours. The response includes a `refreshed_at` property in a `count` object that contains a timestamp indicating when the count was last updated. **Note**: When the count exceeds 100,000, the `refreshed_at` property may occasionally be null. This indicates that the count is being updated in the background. The `count` object's `value` property is limited to 100,000 until the update is complete. #### Allowed For * Admins, Agents and Light Agents

operationId: Users_countUsers

Parameters

Name In Required Type Description
optional
optional
optional

Responses

200 Success response
GET /api/v2/users/count
POST /api/v2/users/create_many

Accepts an array of up to 100 user objects. **Note**: To protect the data in your Zendesk account, bulk user imports are not enabled by default in Zendesk accounts. The account owner must contact [Zendesk Customer Support](https://support.zendesk.com/hc/en-us/articles/4408843597850) to enable the imports. A 403 Forbidden error is returned if data imports are not enabled. #### Allowed For * Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage end users or team members #### Specifying an organization You can assign a user to an existing organization by setting an `organization_id` property in the user object. #### Response This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information.

operationId: Users_createManyUsers

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/UsersCreateManyRequestExample"
        }
      }
    }
  },
  "required": true
}

Responses

200 Success response
POST /api/v2/users/create_many
POST /api/v2/users/create_or_update

Creates a user if the user does not already exist, or updates an existing user identified by e-mail address or external ID. If you don't specify a role parameter, the new user is assigned the role of end user. If you need to create users without sending out a verification email, include a `"skip_verify_email": true` property in the body. #### External ID Case Sensitivity When providing an external id to identify an existing user to update, the search for the user record is not case sensitive. However, if an existing user is found, the system will update the user's external id to match the case of the external id used to find the user. #### Response Status Code - If the user exists in Zendesk, a successful request returns a 200 status code with "Location: /api/v2/users/{user_id}.json". - If the user does not exist in Zendesk, a successful request returns a 201 status code with "Location: /api/v2/users/{new_user_id}.json". #### Allowed For * Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage end users or team members

operationId: Users_createOrUpdateUser

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UserRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/UserRequestExample"
        }
      }
    }
  },
  "required": true
}

Responses

200 Successful response, when user exits
201 Created response, when user is new
POST /api/v2/users/create_or_update
POST /api/v2/users/create_or_update_many

Accepts an array of up to 100 user objects. For each user, the user is created if it does not already exist, or the existing user is updated. **Note**: To protect the data in your Zendesk account, bulk user imports are not enabled by default in Zendesk accounts. The account owner must contact [Zendesk Customer Support](https://support.zendesk.com/hc/en-us/articles/4408843597850) to enable the imports. A 403 Forbidden error is returned if data imports are not enabled. Each individual user object can identify an existing user by `email` or by `external_id`. This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information. #### Allowed For * Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage end users or team members

operationId: Users_createOrUpdateMany

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/UsersRequestExample"
        }
      }
    }
  },
  "required": true
}

Responses

200 Success response
POST /api/v2/users/create_or_update_many
DELETE /api/v2/users/destroy_many

Accepts a comma-separated list of up to 100 user ids. The request takes an `ids` or an `external_ids` query parameter. #### Allowed for - Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage end users or team members #### Response This endpoint returns a `job_status` [JSON object](/api-reference/ticketing/ticket-management/job_statuses/#json-format) and queues a background job to do the work. Use the [Show Job Status](/api-reference/ticketing/ticket-management/job_statuses/#show-job-status) endpoint to check for the job's completion. Only a certain number of jobs can be queued or running at the same time. See [Job limit](/api-reference/introduction/rate-limits/#job-limit) for more information.

operationId: Users_bulkDeleteMany

Parameters

Name In Required Type Description
ids query optional string Id of the users to delete. Comma separated
external_ids query optional string External Id of the users to delete. Comma separated

Responses

200 Success response
DELETE /api/v2/users/destroy_many
POST /api/v2/users/logout_many

Accepts a comma-separated list of up to 100 user ids. #### Allowed For: * Admins

operationId: Users_logoutManyUsers

Parameters

Name In Required Type Description
ids query optional string Accepts a comma-separated list of up to 100 user ids.

Responses

202 Accepted response
POST /api/v2/users/logout_many
GET /api/v2/users/me

The endpoint returns [user information](https://developer.zendesk.com) and an `authenticity_token`. #### Allowed For * Anonymous users #### Authenticity Token Zendesk API calls made by end users from a Zendesk help center must include `authenticity_token` in the `X-CSRF-Token` HTTP header. This helps prevent [cross-site request forgery (CSRF)](https://en.wikipedia.org/wiki/Cross-site_request_forgery) attacks. For an example using an authenticity token, see the AJAX request in the [Upgrading from Templating API v1](https://developer.zendesk.com/documentation/help_center/help-center-templates/v1#jquery) documentation.

operationId: Users_showSelfInfo

Responses

200 Success response
GET /api/v2/users/me
POST /api/v2/users/request_create

Sends the owner a reminder email to update their subscription so more agents can be created. #### Allowed For * Agents

operationId: Users_requestCreateReminder

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UserRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/RequestUserCreateRequestExample"
        }
      }
    }
  },
  "required": true
}

Responses

200 description
POST /api/v2/users/request_create
GET /api/v2/users/search

Returns an array of users who meet the search criteria. #### Pagination * Offset pagination only See [Using Offset Pagination](/api-reference/ticketing/introduction/#using-offset-pagination). #### Allowed For * Admins, Agents and Light Agents

operationId: Users_searchResults

Parameters

Name In Required Type Description
query query optional string The `query` parameter supports the Zendesk search syntax for more advanced user searches. It can specify a partial or full value of any user property, including name, email address, notes, or phone. Example: `query="jdoe"`. See the [Search API](https://developer.zendesk.com).
external_id query optional string The `external_id` parameter does not support the search syntax. It only accepts ids.

Responses

200 Success response
GET /api/v2/users/search
GET /api/v2/users/show_many

Accepts a comma-separated list of up to 100 user ids or external ids. #### Allowed For: * Agents

operationId: Users_getMany

Parameters

Name In Required Type Description
ids query optional string Accepts a comma-separated list of up to 100 user ids.
external_ids query optional string Accepts a comma-separated list of up to 100 external ids.

Responses

200 Success response
GET /api/v2/users/show_many
PUT /api/v2/users/update_many
operationId: Users_updateMany

Parameters

Name In Required Type Description
ids query optional string Id of the users to update. Comma separated
external_ids query optional string External Id of the users to update. Comma separated

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UsersUpdateManyRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/UpdateManyUsersRequestExample"
        }
      }
    }
  },
  "required": true
}

Responses

200 Successful response
PUT /api/v2/users/update_many
DELETE /api/v2/users/{user_id}

Deletes the user and associated records from the account. **Warning**: * Deleted users are not recoverable. * Both agents and administrators can soft delete users in the agent interface in Zendesk Support. Agents with permission can delete end users, while administrators can delete all users except the account owner. To comply with GDPR, a further step is needed. See [Permanently Delete User](/api-reference/ticketing/users/users/#permanently-delete-user). #### Allowed For * Admins and [agents in custom roles with permission](https://support.zendesk.com/hc/en-us/articles/4408882153882#topic_cxn_hig_bd) to manage end users or team members

operationId: Users_deleteUser

Responses

200 Success response
DELETE /api/v2/users/{user_id}
GET /api/v2/users/{user_id}

#### Allowed For * Agents

operationId: Users_showUser

Responses

200 Success response
GET /api/v2/users/{user_id}
PUT /api/v2/users/{user_id}
operationId: Users_updateUser

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UserRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/UpdateUserRequestExample"
        }
      }
    }
  },
  "required": true
}

Responses

200 Success response
PUT /api/v2/users/{user_id}
GET /api/v2/users/{user_id}/compliance_deletion_statuses

Returns the GDPR status for each user per area of compliance. A Zendesk area of compliance is typically a product like "support/explore" but can be more fine-grained for areas within the product lines. If the user is not in the account, the request returns a 404 status. ```http Status: 404 { "error":"RecordNotFound", "description":"Not found" } ``` #### Allowed For * Agents, with restrictions #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com).

operationId: Users_showComplianceDeletionStatuses

Parameters

Name In Required Type Description
application query optional string Area of compliance

Responses

200 Success response
GET /api/v2/users/{user_id}/compliance_deletion_statuses
PUT /api/v2/users/{user_id}/merge

Merges the end user specified in the path parameter into the existing end user specified in the request body. Any two end users can be merged with the exception of end users created by sharing agreements. Agents and admins cannot be merged. For more information about how user data is merged, see [Merging a user's duplicate account](https://support.zendesk.com/hc/en-us/articles/4408887695898) in Zendesk help. #### Allowed For * Admins or agents with permission to edit end users

operationId: Users_mergeEndUser

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/UserRequest"
      },
      "examples": {
        "default": {
          "$ref": "#/components/examples/MergeEndUsersRequestExample"
        }
      }
    }
  },
  "required": true
}

Responses

200 Success response
PUT /api/v2/users/{user_id}/merge
GET /api/v2/users/{user_id}/related
operationId: Users_showRelatedInfo

Responses

200 Success response
GET /api/v2/users/{user_id}/related

Views 19 endpoints

GET /api/v2/views

Lists shared and personal views available to the current user. #### Sideloads The following sideloads are supported: | Name | Will sideload | ---------------- | ------------- | app_installation | The app installation that requires each view, if present | permissions | The permissions for each view #### Pagination - Cursor pagination (recommended, but only sorts by `created_at`) - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents

operationId: Views_listAvailable

Parameters

Name In Required Type Description
access query optional string Only views with given access. May be "personal", "shared", or "account"
active query optional boolean Only active views if true, inactive views if false
group_id query optional integer Only views belonging to given group
sort_by query optional string Possible values are "alphabetical", "created_at", or "updated_at". Defaults to "position"
sort_order query optional string One of "asc" or "desc". Defaults to "asc" for alphabetical and position sort, "desc" for all others

Responses

200 Success response
GET /api/v2/views
POST /api/v2/views

#### Allowed For * Agents #### JSON Format The JSON format consists of one property, a `view` object that lists the values to set when the view is created. **Note**: The request must include at least one condition in the `all` array that checks one of the following fields: `status`, `type`, `group_id`, `assignee_id`, or `requester_id`. | Name | Description | ----------- | ----------- | title | Required. The title of the view | all | Required. An array of one or more conditions. A ticket must meet all of them to be included in the view. See [Conditions reference](https://developer.zendesk.com) | any | An array of one or more conditions. A ticket must meet any of them to be included in the view. See [Conditions reference](https://developer.zendesk.com) | description | The description of the view | active | Allowed values are true or false. Determines if the view is displayed or not | output | An object that specifies the columns to display. Example: `"output": {"columns": ["status", "description", "priority"]}`. See [View columns](https://developer.zendesk.com) | restriction | An object that describes who can access the view. To give all agents access to the view, omit this property The `restriction` object has the following properties. | Name | Comment | ---- | ------- | type | Allowed values are "Group" or "User" | id | The numeric ID of a single group or user | ids | The numeric IDs of a single or more groups. Recommended for "Group" `type` If `type` is "Group", the `ids` property is the preferred method of specifying the group id or ids. #### Example Request Body ```js { "view": { "title": "Kelly's tickets", "raw_title": "{{dc.tickets_assigned_to_kelly}}", "description": "Tickets that are assigned to Kelly", "active": true, "position": 3, "restriction": { "type": "User", "id": "213977756" }, "all": [ { "field": "status", "operator": "less_than", "value": "solved" }, { "field": "group_id", "operator": "is", "value": "24000932" }, { "field": "custom_fields_360011872073", "operator": "is", "value": "Canada" }, ... ], "output": { "columns": ["status", "requester", "assignee"], "group_by": "assignee", "group_order": "desc", "sort_by": "status", "sort_order": "desc" } } } ``` #### View columns The `output` request parameter lets you specify what columns to include in the view in the agent interface. Example: `"output": {"columns": ["status", "description", "priority"]}`. The following table lists possible columns for views in the agent UI and the corresponding values in the `columns` array. For custom fields, specify the id of the custom field in the `columns` array. You can specify a total of 10 columns to a view. | View column title in UI | Value | |---------------------------- | -------------------- | | Assigned | `assigned` | | Assignee | `assignee` | | Due Date | `due_date` | | Group | `group` | | ID | `nice_id` | | Updated | `updated` | | Assignee updated | `updated_assignee` | | Requester updated | `updated_requester` | | Updater | `updated_by_type` | | Organization | `organization` | | Priority | `priority` | | Requested | `created` | | Requester | `requester` | | Requester language | `locale_id` | | Satisfaction | `satisfaction_score` | | Solved | `solved` | | Status category | `status` | | Subject | `description` | | Submitter | `submitter` | | Ticket form | `ticket_form` | | Type | `type` | | Brand | `brand` | | Ticket status | `custom_status_id` | #### View sorting You can group and sort items in the view by adding items to the `output` parameter: | Attribute | Description |-----------------------------| ----------- | `group_by`, `sort_by` | Sort or group the tickets by a column in the [View columns](https://developer.zendesk.com) table. The `subject` and `submitter` columns are not supported | `group_order`, `sort_order` | Either "asc" or "desc"

operationId: Views_createNewView

Responses

200 Success response
POST /api/v2/views
GET /api/v2/views/active

Lists active shared and personal views available to the current user. #### Sideloads The following sideloads are supported: | Name | Will sideload | ---------------- | ------------- | app_installation | The app installation that requires each view, if present | permissions | The permissions for each view #### Pagination - Offset pagination See [Pagination](https://developer.zendesk.com). Returns a maximum of 100 records per page. #### Allowed For * Agents

operationId: Views_listActiveViews

Parameters

Name In Required Type Description
access query optional string Only views with given access. May be "personal", "shared", or "account"
group_id query optional integer Only views belonging to given group
sort_by query optional string Possible values are "alphabetical", "created_at", or "updated_at". Defaults to "position"
sort_order query optional string One of "asc" or "desc". Defaults to "asc" for alphabetical and position sort, "desc" for all others

Responses

200 Success response
GET /api/v2/views/active
GET /api/v2/views/compact

A compacted list of shared and personal views available to the current user. This endpoint never returns more than 32 records and does not respect the "per_page" option. #### Allowed For * Agents

operationId: Views_listCompactViews

Responses

200 Success response
GET /api/v2/views/compact
GET /api/v2/views/count

Returns an approximate count of shared and personal views available to the current user. If the count exceeds 100,000, the count will return a cached result. This cached result will update every 24 hours. The `count[refreshed_at]` property is a timestamp that indicates when the count was last updated. **Note**: When the count exceeds 100,000, `count[refreshed_at]` may occasionally be null. This indicates that the count is being updated in the background, and `count[value]` is limited to 100,000 until the update is complete. #### Allowed For * Agents

operationId: Views_getCount

Responses

200 Count of views
GET /api/v2/views/count
GET /api/v2/views/count_many

Returns the ticket count of each view in a list of views. Accepts up to 20 view ids per request. For the ticket count of a single view, see [Count Tickets in View](https://developer.zendesk.com). Only returns values for personal and shared views accessible to the user performing the request. This endpoint is rate limited to 6 requests every 5 minutes. #### Allowed For * Agents

operationId: Views_getTicketCountForManyViews

Parameters

Name In Required Type Description
ids query required string List of view's ids separated by commas.

Responses

200 Success response
GET /api/v2/views/count_many
DELETE /api/v2/views/destroy_many

Deletes the views corresponding to the provided list of IDs. #### Allowed For * Agents

operationId: Views_bulkDelete

Parameters

Name In Required Type Description
ids query required string The IDs of the views to delete

Responses

204 No Content response
DELETE /api/v2/views/destroy_many
POST /api/v2/views/preview

You can preview views by constructing the conditions in the proper format and nesting them under the `view` property. See [Conditions reference](https://developer.zendesk.com). The output can also be controlled by passing in any of the following parameters and nesting them under the `output` property. | Name | Type | Comment | --------------- | ------- | ------- | columns | Array | The ticket fields to display. System fields are looked up by name, custom fields by title or id. See the [View columns](https://developer.zendesk.com) table | group_by | String | When present, the field by which the tickets are grouped | group_order | String | The direction the tickets are grouped. May be one of "asc" or "desc" | sort_order | String | The direction the tickets are sorted. May be one of "asc" or "desc" | sort_by | String | The ticket field used for sorting. This will either be a title or a custom field id. This endpoint is rate limited to 5 requests per minute, per view, per agent. #### Allowed For * Agents

operationId: Views_previewCreate

Responses

200 Success response
POST /api/v2/views/preview
POST /api/v2/views/preview/count

Returns the ticket count for a single preview. #### Allowed For * Agents

operationId: Views_getTicketCount

Responses

200 Success response
POST /api/v2/views/preview/count
GET /api/v2/views/search

#### Pagination * Offset pagination only See [Using Offset Pagination](/api-reference/ticketing/introduction/#using-offset-pagination). #### Allowed For * Agents #### Sideloads The following sideloads are supported. For more information, see [Side-loading](https://developer.zendesk.com). | Name | Will sideload | ---------------- | ------------- | app_installation | The app installation that requires each view, if present | permissions | The permissions for each view

operationId: Views_searchResults

Parameters

Name In Required Type Description
query query required string Query string used to find all views with matching title
access query optional string Filter views by access. May be "personal", "shared", or "account"
active query optional boolean Filter by active views if true or inactive views if false
group_id query optional integer Filter views by group
sort_by query optional string Possible values are "alphabetical", "created_at", "updated_at", and "position". If unspecified, the views are sorted by relevance
sort_order query optional string One of "asc" or "desc". Defaults to "asc" for alphabetical and position sort, "desc" for all others
include query optional string A sideload to include in the response. See [Sideloads](https://developer.zendesk.com)

Responses

200 Success response
GET /api/v2/views/search
GET /api/v2/views/show_many

#### Allowed For * Agents #### Sideloads The following sideloads are supported: | Name | Will sideload | ---------------- | ------------- | app_installation | The app installation that requires each view, if present | permissions | The permissions for each view

operationId: Views_listByIds

Parameters

Name In Required Type Description
ids query required string List of view's ids separated by commas.
active query optional boolean Only active views if true, inactive views if false

Responses

200 Success response
GET /api/v2/views/show_many
PUT /api/v2/views/update_many

#### Allowed For * Agents #### Request Parameters The PUT request expects a `views` object that lists the views to update. Each view may have the following properties: | Name | Mandatory | Description | -------- | --------- | ----------- | id | yes | The ID of the view to update | position | no | The new position of the view | active | no | The active status of the view (true or false) #### Example Request Body ```js { "views": [ {"id": 25, "position": 3}, {"id": 23, "position": 5}, {"id": 27, "position": 9}, {"id": 22, "position": 7} ] } ```

operationId: Views_updateMany

Responses

200 Success response
PUT /api/v2/views/update_many
DELETE /api/v2/views/{view_id}

#### Allowed For * Agents

operationId: Views_deleteView

Responses

204 No Content response
DELETE /api/v2/views/{view_id}
GET /api/v2/views/{view_id}

#### Allowed For * Agents

operationId: Views_showView

Responses

200 Success response
GET /api/v2/views/{view_id}
PUT /api/v2/views/{view_id}

#### Allowed For * Agents #### JSON Format The PUT request takes one property, a `view` object that lists the values to update. All properties are optional. **Note**: Updating a condition updates the containing array, clearing the other conditions. Include all your conditions when updating any condition. | Name | Description | ----------- | ----------- | title | The title of the view | all | An array of one or more conditions. A ticket must meet all the conditions to be included in the view. The PUT request replaces all existing conditions. See [Conditions reference](https://developer.zendesk.com) | any | An array of one or more conditions. A ticket must meet any of them to be included in the view. At least one `all` condition must be defined with the `any` conditions. The PUT request replaces all existing `any` conditions. See [Conditions reference](https://developer.zendesk.com) | active | Allowed values are true or false. Determines if the view is displayed or not | output | An object that specifies the columns to display. Example: `"output": {"columns": ["status", "description," "priority"]}`. See [View columns](https://developer.zendesk.com) | restriction | An object that describes who can access the view. To give all agents access to the view, omit this property The `restriction` object has the following properties. | Name | Comment | ---- | ------- | type | Allowed values are "Group" or "User" | id | The numeric ID of a single group or user | ids | The numeric IDs of a single or more groups. Recommended for "Group" `type` If `type` is "Group", the `ids` property is the preferred method of specifying the group id or ids. You can also update how items are sorted and grouped. See [View sorting](https://developer.zendesk.com) in Create View. #### Example Request Body ```js { "view": { "title": "Code red tickets", "restriction": { "type": "Group", "ids": [10052, 10057, 10062, 10002] }, "all": [ { "field": "priority", "operator": "is", "value": "urgent" } ], "output": { "columns": ["status", "requester", "assignee", "updated"] } } } ```

operationId: Views_updateView

Responses

200 Success response
PUT /api/v2/views/{view_id}
GET /api/v2/views/{view_id}/count

Returns the ticket count for a single view. This endpoint is rate limited to 5 requests per minute, per view, per agent. #### View Counts The view count endpoints, Count Tickets in View (this endpoint) and [Count Tickets in Views](https://developer.zendesk.com), let you estimate how many tickets remain in a view without having to retrieve the entire view. They're designed to help estimate view size. From a business perspective, accuracy becomes less relevant as view size increases. To ensure quality of service, these counts are cached more heavily as the number of tickets in a view grows. For a view with thousands of tickets, you can expect the count to be cached for 60-90 minutes. As a result, the count may not reflect the actual number of tickets in your view. View counts are represented as JSON objects with the following attributes: | Name | Type | Comment | --------------- | ------------| ------- | view_id | integer | The id of the view | url | string | The API url of the count | value | integer | The cached number of tickets in the view. Can also be null if the system is loading and caching new data. Not to be confused with 0 tickets | pretty | string | A pretty-printed text approximation of the view count | fresh | boolean | false if the cached data is stale and the system is still loading and caching new data | active | boolean | Only active views if true, inactive views if false, all views if null. #### Example ```js { "view_count": { "view_id": 25, "url": "https://company.zendesk.com/api/v2/views/25/count.json", "value": 719, "pretty": "~700", "fresh": true } } ```

operationId: Views_countTickets

Responses

200 Success response
GET /api/v2/views/{view_id}/count
GET /api/v2/views/{view_id}/execute

Returns the column titles and the rows of the specified view. The `columns` array lists the view's column titles and includes only views parameters. The `rows` array lists the values of each column for each ticket and includes parameters from both views and tickets. Though not displayed in the view, a partial ticket object is included with each row object. **Note**: To get the full ticket objects for a specified view, use [List Tickets from a View](https://developer.zendesk.com). This endpoint is rate limited to 5 requests per minute, per view, per agent. The view execution system is designed for periodic rather than high-frequency API usage. In particular, views called very frequently may be cached by Zendesk. This means that the API client will still receive a result, but that result may have been computed at any time within the last 10 minutes. Zendesk recommends using the Incremental Ticket Export endpoint to get the latest changes. You can call it more often, and it returns all the tickets that changed since the last poll. For details and rate limits, see [Incremental Exports](https://developer.zendesk.com). View output sorting can be controlled by passing the `sort_by` and `sort_order` parameters in the format described in the table in [Preview Views](https://developer.zendesk.com). #### Allowed For * Agents #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com).

operationId: Views_executeView

Parameters

Name In Required Type Description
sort_by query optional string The ticket field used for sorting. This will either be a title or a custom field id.
sort_order query optional string The direction the tickets are sorted. May be one of 'asc' or 'desc'

Responses

200 Success response
GET /api/v2/views/{view_id}/execute
GET /api/v2/views/{view_id}/export

Returns the csv attachment of the specified view if possible. Enqueues a job to produce the csv if necessary. #### Allowed For * Agents

operationId: Views_exportCsv

Responses

200 Success response
GET /api/v2/views/{view_id}/export
GET /api/v2/views/{view_id}/tickets

#### Allowed For * Agents #### Pagination * Cursor pagination (recommended) * Offset pagination See [Pagination](https://developer.zendesk.com).

operationId: Views_listTicketsFromView

Parameters

Name In Required Type Description
sort_by query optional string Sort or group the tickets by a column in the [View columns](https://developer.zendesk.com) table. The `subject` and `submitter` columns are not supported
sort_order query optional string One of "asc" or "desc". Defaults to "asc" for alphabetical and position sort, "desc" for all others

Responses

200 Success response
GET /api/v2/views/{view_id}/tickets

Workspaces 7 endpoints

GET /api/v2/workspaces

#### Allowed For * Admins, Agents

operationId: Workspaces_list

Responses

200 Success Response
GET /api/v2/workspaces
POST /api/v2/workspaces

#### Allowed For * Admins

operationId: Workspaces_createNew

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/WorkspacesCreateNewRequest"
      },
      "examples": {
        "default": {
          "value": {
            "workspace": {
              "title": "Test Workspace 1",
              "macros": [
                360005374974
              ],
              "conditions": {
                "all": [
                  {
                    "field": "ticket_form_id",
                    "value": "360000014173",
                    "operator": "is"
                  }
                ],
                "any": []
              },
              "description": "Test rules",
              "ticket_form_id": 360000014173
            }
          }
        }
      }
    }
  }
}

Responses

201 Created workspace
POST /api/v2/workspaces
DELETE /api/v2/workspaces/destroy_many

#### Allowed For * Admins

operationId: Workspaces_bulkDelete

Parameters

Name In Required Type Description
ids query required array The ids of the workspaces to delete

Responses

200 Succesful response
DELETE /api/v2/workspaces/destroy_many
PUT /api/v2/workspaces/reorder

#### Allowed For * Admins

operationId: Workspaces_reorderWorkspaces

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/WorkspacesReorderWorkspacesRequest"
      },
      "examples": {
        "default": {
          "value": {
            "ids": [
              12,
              32,
              48,
              60
            ]
          }
        }
      }
    }
  }
}

Responses

200 Succesful response
PUT /api/v2/workspaces/reorder
DELETE /api/v2/workspaces/{workspace_id}

#### Allowed For * Admins

operationId: Workspaces_deleteWorkspace

Responses

204 No Content
DELETE /api/v2/workspaces/{workspace_id}
GET /api/v2/workspaces/{workspace_id}

#### Allowed For * Admins

operationId: Workspaces_getWorkspace

Responses

200 Successful response
GET /api/v2/workspaces/{workspace_id}
PUT /api/v2/workspaces/{workspace_id}

#### Allowed For * Admins

operationId: Workspaces_updateWorkspace

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/WorkspacesUpdateWorkspaceRequest"
      },
      "examples": {
        "default": {
          "value": {
            "workspace": {
              "title": "Test Workspace 1",
              "macros": [
                360005374974
              ],
              "conditions": {
                "all": [
                  {
                    "field": "ticket_form_id",
                    "value": "360000014173",
                    "operator": "is"
                  }
                ],
                "any": []
              },
              "description": "Test rules",
              "ticket_form_id": 360000014173
            }
          }
        }
      }
    }
  }
}

Responses

200 OK
PUT /api/v2/workspaces/{workspace_id}

X channel 4 endpoints

GET /api/v2/channels/twitter/monitored_twitter_handles

#### Allowed For * Admins * Agents

operationId: XChannel_listMonitoredHandles

Responses

200 Success response
GET /api/v2/channels/twitter/monitored_twitter_handles
GET /api/v2/channels/twitter/monitored_twitter_handles/{monitored_twitter_handle_id}

#### Allowed For * Admins * Agents

operationId: XChannel_showMonitoredHandle

Responses

200 Success response
GET /api/v2/channels/twitter/monitored_twitter_handles/{monitored_twitter_handle_id}
POST /api/v2/channels/twitter/tickets

Turns a tweet into a ticket. You must provide the tweet id as well as the id of a monitored X (formerly Twitter) handle configured for your account. The submitter of the ticket is set to be the user submitting the API request. #### Allowed For * Agents

operationId: XChannel_tweetToTicket

Responses

201 description
POST /api/v2/channels/twitter/tickets
GET /api/v2/channels/twitter/tickets/{comment_id}/statuses

#### Allowed For * Agents

operationId: XChannel_listTicketStatuses

Parameters

Name In Required Type Description
ids query optional string Optional comment ids to retrieve tweet information for only particular comments

Responses

200 Success response
GET /api/v2/channels/twitter/tickets/{comment_id}/statuses

Schemas

object AccountSettingsActiveFeaturesObject
{
  "type": "object",
  "properties": {
    "chat": {
      "type": "boolean"
    },
    "voice": {
      "type": "boolean"
    },
    "explore": {
      "type": "boolean"
    },
    "sandbox": {
      "type": "boolean"
    },
    "twitter": {
      "type": "boolean"
    },
    "facebook": {
      "type": "boolean"
    },
    "insights": {
      "type": "boolean"
    },
    "markdown": {
      "type": "boolean"
    },
    "allow_ccs": {
      "type": "boolean"
    },
    "is_abusive": {
      "type": "boolean"
    },
    "google_login": {
      "type": "boolean"
    },
    "light_agents": {
      "type": "boolean"
    },
    "ticket_forms": {
      "type": "boolean"
    },
    "user_tagging": {
      "type": "boolean"
    },
    "bcc_archiving": {
      "type": "boolean"
    },
    "twitter_login": {
      "type": "boolean"
    },
    "business_hours": {
      "type": "boolean"
    },
    "facebook_login": {
      "type": "boolean"
    },
    "on_hold_status": {
      "type": "boolean"
    },
    "ticket_tagging": {
      "type": "boolean"
    },
    "forum_analytics": {
      "type": "boolean"
    },
    "user_org_fields": {
      "type": "boolean"
    },
    "agent_forwarding": {
      "type": "boolean"
    },
    "csat_reason_code": {
      "type": "boolean"
    },
    "dynamic_contents": {
      "type": "boolean"
    },
    "topic_suggestion": {
      "type": "boolean"
    },
    "automatic_answers": {
      "type": "boolean"
    },
    "benchmark_opt_out": {
      "type": "boolean"
    },
    "fallback_composer": {
      "type": "boolean"
    },
    "advanced_analytics": {
      "type": "boolean"
    },
    "custom_dkim_domain": {
      "type": "boolean"
    },
    "chat_about_my_ticket": {
      "type": "boolean"
    },
    "customer_satisfaction": {
      "type": "boolean"
    },
    "good_data_and_explore": {
      "type": "boolean"
    },
    "rich_content_in_emails": {
      "type": "boolean"
    },
    "satisfaction_prediction": {
      "type": "boolean"
    },
    "customer_context_as_default": {
      "type": "boolean"
    },
    "explore_on_support_ent_plan": {
      "type": "boolean"
    },
    "explore_on_support_pro_plan": {
      "type": "boolean"
    },
    "organization_access_enabled": {
      "type": "boolean"
    },
    "suspended_ticket_notification": {
      "type": "boolean"
    },
    "allow_email_template_customization": {
      "type": "boolean"
    }
  },
  "description": "The active features for an account. See [Active Features](https://developer.zendesk.com)"
}
object AccountSettingsAgentObject
{
  "type": "object",
  "properties": {
    "agent_home": {
      "type": "boolean"
    },
    "focus_mode": {
      "type": "boolean"
    },
    "agent_workspace": {
      "type": "boolean"
    },
    "idle_timeout_enabled": {
      "type": "boolean"
    },
    "unified_agent_statuses": {
      "type": "boolean"
    },
    "aw_self_serve_migration_enabled": {
      "type": "boolean"
    }
  },
  "description": "Configuration for the agent workspace. See [Agents](https://developer.zendesk.com)"
}
object AccountSettingsApiObject
{
  "type": "object",
  "properties": {
    "api_token_access": {
      "type": "string"
    },
    "api_password_access": {
      "type": "string"
    },
    "accepted_api_agreement": {
      "type": "boolean"
    }
  },
  "description": "API configuration options. See [API](https://developer.zendesk.com)"
}
object AccountSettingsAppsObject
{
  "type": "object",
  "properties": {
    "use": {
      "type": "boolean"
    },
    "create_public": {
      "type": "boolean"
    },
    "create_private": {
      "type": "boolean"
    }
  },
  "description": "Apps configuration options. See [Apps](https://developer.zendesk.com)"
}
object AccountSettingsBillingObject
{
  "type": "object",
  "properties": {
    "backend": {
      "type": "string"
    }
  },
  "description": "Billing configuration options. See [Billing](https://developer.zendesk.com)"
}
object AccountSettingsBrandingObject
{
  "type": "object",
  "properties": {
    "text_color": {
      "type": "string"
    },
    "favicon_url": {
      "type": "string",
      "nullable": true
    },
    "header_color": {
      "type": "string"
    },
    "header_logo_url": {
      "type": "string",
      "nullable": true
    },
    "tab_background_color": {
      "type": "string"
    },
    "page_background_color": {
      "type": "string"
    }
  },
  "description": "Branding settings. See [Branding](https://developer.zendesk.com)"
}
object AccountSettingsBrandsObject
{
  "type": "object",
  "properties": {
    "default_brand_id": {
      "type": "integer"
    },
    "require_brand_on_new_tickets": {
      "type": "boolean"
    }
  },
  "description": "Brand settings. See [Brands](https://developer.zendesk.com)"
}
object AccountSettingsCdnObject
{
  "type": "object",
  "properties": {
    "hosts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      }
    },
    "cdn_provider": {
      "type": "string"
    },
    "fallback_cdn_provider": {
      "type": "string"
    }
  },
  "description": "CDN settings"
}
object AccountSettingsChatObject
{
  "type": "object",
  "properties": {
    "enabled": {
      "type": "boolean"
    },
    "available": {
      "type": "boolean"
    },
    "integrated": {
      "type": "boolean"
    },
    "welcome_message": {
      "type": "string"
    },
    "maximum_request_count": {
      "type": "integer"
    }
  },
  "description": "Zendesk Chat settings. See [Chat](https://developer.zendesk.com)"
}
object AccountSettingsCrossSellObject
{
  "type": "object",
  "properties": {
    "xsell_source": {
      "type": "string",
      "nullable": true
    },
    "show_chat_tooltip": {
      "type": "boolean"
    }
  },
  "description": "Cross Sell settings"
}
object AccountSettingsGooddataAdvancedAnalyticsObject
{
  "type": "object",
  "properties": {
    "enabled": {
      "type": "boolean"
    }
  },
  "description": "GoodData settings, used for insights. Legacy configuration prior to Zendesk Explore. See [GoodData Advanced Analytics](https://developer.zendesk.com)"
}
object AccountSettingsGoogleAppsObject
{
  "type": "object",
  "properties": {
    "has_google_apps": {
      "type": "boolean"
    },
    "has_google_apps_admin": {
      "type": "boolean"
    }
  },
  "description": "Google Apps configuration. See [G Suite](https://developer.zendesk.com)"
}
object AccountSettingsGroupObject
{
  "type": "object",
  "properties": {
    "check_group_name_uniqueness": {
      "type": "boolean"
    }
  },
  "description": "Group configuration"
}
object AccountSettingsLimitsObject
{
  "type": "object",
  "properties": {
    "attachment_size": {
      "type": "integer"
    }
  },
  "description": "Account limits configuration. See [Limits](https://developer.zendesk.com)"
}
object AccountSettingsLocalizationObject
{
  "type": "object",
  "properties": {
    "locale_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    }
  },
  "description": "Internationalization configuration settings. See [Localization](https://developer.zendesk.com)"
}
object AccountSettingsLotusObject
{
  "type": "object",
  "properties": {
    "pod_id": {
      "type": "integer"
    },
    "reporting": {
      "type": "boolean"
    },
    "prefer_lotus": {
      "type": "boolean"
    }
  },
  "description": "Support UI settings. See [Lotus](https://developer.zendesk.com)"
}
object AccountSettingsMetricsObject
{
  "type": "object",
  "properties": {
    "account_size": {
      "type": "string"
    }
  },
  "description": "Account metrics settings. See [Metrics](https://developer.zendesk.com)"
}
object AccountSettingsObject
{
  "type": "object",
  "example": {
    "api": {
      "api_token_access": "true",
      "api_password_access": "true",
      "accepted_api_agreement": true
    },
    "cdn": {
      "hosts": [
        {
          "url": "https://p18.zdassets.com",
          "name": "default"
        },
        {
          "url": "https://d2y9oszrd3dhjh.cloudfront.net",
          "name": "cloudfront"
        }
      ],
      "cdn_provider": "default",
      "fallback_cdn_provider": "cloudfront"
    },
    "apps": {
      "use": true,
      "create_public": false,
      "create_private": true
    },
    "chat": {
      "enabled": false,
      "available": true,
      "integrated": true,
      "welcome_message": "Hi there. How can I help today?",
      "maximum_request_count": 1
    },
    "rule": {
      "macro_order": "alphabetical",
      "macro_most_used": true,
      "using_skill_based_routing": false,
      "skill_based_filtered_views": []
    },
    "user": {
      "tagging": true,
      "language_selection": true,
      "time_zone_selection": true,
      "have_gravatars_enabled": true,
      "multiple_organizations": false,
      "agent_created_welcome_emails": true,
      "end_user_phone_number_validation": false
    },
    "lotus": {
      "pod_id": 999,
      "reporting": true,
      "prefer_lotus": true
    },
    "voice": {
      "enabled": true,
      "logging": true,
      "outbound_enabled": true,
      "recordings_public": true,
      "maximum_queue_size": 5,
      "uk_mobile_forwarding": true,
      "maximum_queue_wait_time": 1,
      "agent_wrap_up_after_calls": true,
      "only_during_business_hours": false,
      "agent_confirmation_when_forwarding": true
    },
    "agents": {
      "agent_home": false,
      "focus_mode": false,
      "agent_workspace": false,
      "idle_timeout_enabled": false,
      "unified_agent_statuses": false,
      "aw_self_serve_migration_enabled": true
    },
    "brands": {
      "default_brand_id": 1873,
      "require_brand_on_new_tickets": false
    },
    "groups": {
      "check_group_name_uniqueness": true
    },
    "limits": {
      "attachment_size": 52428800
    },
    "billing": {
      "backend": "zuora"
    },
    "metrics": {
      "account_size": "100-399"
    },
    "routing": {
      "enabled": false,
      "autorouting_tag": "",
      "max_email_capacity": 0,
      "max_messaging_capacity": 0,
      "reassignment_talk_timeout": 30,
      "reassignment_messaging_enabled": true,
      "reassignment_messaging_timeout": 30
    },
    "tickets": {
      "tagging": true,
      "status_hold": false,
      "collaboration": true,
      "has_color_text": true,
      "agent_collision": true,
      "list_empty_views": true,
      "allow_group_reset": true,
      "email_attachments": false,
      "rich_text_comments": true,
      "chat_sla_enablement": false,
      "private_attachments": false,
      "emoji_autocompletion": true,
      "agent_ticket_deletion": false,
      "agent_invitation_enabled": true,
      "auto_translation_enabled": false,
      "markdown_ticket_comments": false,
      "assign_tickets_upon_solve": true,
      "using_skill_based_routing": false,
      "comments_public_by_default": true,
      "list_newest_comments_first": true,
      "assign_default_organization": true,
      "light_agent_email_ccs_allowed": false,
      "accepted_new_collaboration_tos": false,
      "maximum_personal_views_to_list": 8,
      "auto_updated_ccs_followers_rules": false,
      "is_first_comment_private_enabled": true,
      "follower_and_email_cc_collaborations": false
    },
    "twitter": {
      "shorten_url": "optional"
    },
    "branding": {
      "text_color": "FFFFFF",
      "favicon_url": null,
      "header_color": "78A300",
      "header_logo_url": null,
      "tab_background_color": "7FA239",
      "page_background_color": "333333"
    },
    "cross_sell": {
      "xsell_source": null,
      "show_chat_tooltip": true
    },
    "onboarding": {
      "product_sign_up": null,
      "onboarding_segments": null,
      "checklist_onboarding_version": 2
    },
    "statistics": {
      "forum": true,
      "search": true,
      "rule_usage": true
    },
    "google_apps": {
      "has_google_apps": false,
      "has_google_apps_admin": false
    },
    "ticket_form": {
      "ticket_forms_instructions": "Please choose your issue below",
      "raw_ticket_forms_instructions": "Please choose your issue below"
    },
    "localization": {
      "locale_ids": [
        1042
      ]
    },
    "active_features": {
      "chat": false,
      "voice": true,
      "explore": true,
      "sandbox": false,
      "twitter": true,
      "facebook": false,
      "insights": false,
      "markdown": false,
      "allow_ccs": true,
      "is_abusive": false,
      "google_login": false,
      "light_agents": false,
      "ticket_forms": true,
      "user_tagging": true,
      "bcc_archiving": false,
      "twitter_login": false,
      "business_hours": false,
      "facebook_login": false,
      "on_hold_status": false,
      "ticket_tagging": true,
      "forum_analytics": true,
      "user_org_fields": true,
      "agent_forwarding": false,
      "csat_reason_code": false,
      "dynamic_contents": false,
      "topic_suggestion": false,
      "automatic_answers": false,
      "benchmark_opt_out": false,
      "fallback_composer": false,
      "advanced_analytics": false,
      "custom_dkim_domain": true,
      "chat_about_my_ticket": false,
      "customer_satisfaction": false,
      "good_data_and_explore": false,
      "rich_content_in_emails": true,
      "satisfaction_prediction": false,
      "customer_context_as_default": false,
      "explore_on_support_ent_plan": false,
      "explore_on_support_pro_plan": false,
      "organization_access_enabled": true,
      "suspended_ticket_notification": false,
      "allow_email_template_customization": true
    },
    "side_conversations": {
      "email_channel": false,
      "slack_channel": false,
      "msteams_channel": false,
      "tickets_channel": false,
      "show_in_context_panel": false
    },
    "ticket_sharing_partners": {
      "support_addresses": [
        "support@grokpetre.zendesk.com"
      ]
    },
    "gooddata_advanced_analytics": {
      "enabled": true
    }
  },
  "properties": {
    "api": {
      "$ref": "#/components/schemas/AccountSettingsApiObject"
    },
    "cdn": {
      "$ref": "#/components/schemas/AccountSettingsCdnObject"
    },
    "apps": {
      "$ref": "#/components/schemas/AccountSettingsAppsObject"
    },
    "chat": {
      "$ref": "#/components/schemas/AccountSettingsChatObject"
    },
    "rule": {
      "$ref": "#/components/schemas/AccountSettingsRuleObject"
    },
    "user": {
      "$ref": "#/components/schemas/AccountSettingsUserObject"
    },
    "lotus": {
      "$ref": "#/components/schemas/AccountSettingsLotusObject"
    },
    "voice": {
      "$ref": "#/components/schemas/AccountSettingsVoiceObject"
    },
    "agents": {
      "$ref": "#/components/schemas/AccountSettingsAgentObject"
    },
    "brands": {
      "$ref": "#/components/schemas/AccountSettingsBrandsObject"
    },
    "groups": {
      "$ref": "#/components/schemas/AccountSettingsGroupObject"
    },
    "limits": {
      "$ref": "#/components/schemas/AccountSettingsLimitsObject"
    },
    "billing": {
      "$ref": "#/components/schemas/AccountSettingsBillingObject"
    },
    "metrics": {
      "$ref": "#/components/schemas/AccountSettingsMetricsObject"
    },
    "routing": {
      "$ref": "#/components/schemas/AccountSettingsRoutingObject"
    },
    "tickets": {
      "$ref": "#/components/schemas/AccountSettingsTicketObject"
    },
    "twitter": {
      "$ref": "#/components/schemas/AccountSettingsTwitterObject"
    },
    "branding": {
      "$ref": "#/components/schemas/AccountSettingsBrandingObject"
    },
    "cross_sell": {
      "$ref": "#/components/schemas/AccountSettingsCrossSellObject"
    },
    "onboarding": {
      "$ref": "#/components/schemas/AccountSettingsOnboardingObject"
    },
    "statistics": {
      "$ref": "#/components/schemas/AccountSettingsStatisticsObject"
    },
    "google_apps": {
      "$ref": "#/components/schemas/AccountSettingsGoogleAppsObject"
    },
    "ticket_form": {
      "$ref": "#/components/schemas/AccountSettingsTicketFormObject"
    },
    "localization": {
      "$ref": "#/components/schemas/AccountSettingsLocalizationObject"
    },
    "active_features": {
      "$ref": "#/components/schemas/AccountSettingsActiveFeaturesObject"
    },
    "side_conversations": {
      "$ref": "#/components/schemas/AccountSettingsSideConversationsObject"
    },
    "ticket_sharing_partners": {
      "$ref": "#/components/schemas/AccountSettingsTicketSharingPartnersObject"
    },
    "gooddata_advanced_analytics": {
      "$ref": "#/components/schemas/AccountSettingsGooddataAdvancedAnalyticsObject"
    }
  }
}
object AccountSettingsOnboardingObject
{
  "type": "object",
  "properties": {
    "product_sign_up": {
      "type": "string",
      "nullable": true
    },
    "onboarding_segments": {
      "type": "string",
      "nullable": true
    },
    "checklist_onboarding_version": {
      "type": "integer"
    }
  },
  "description": "Onboarding settings"
}
object AccountSettingsResponse
{
  "type": "object",
  "example": {
    "settings": {
      "api": {
        "api_token_access": "true",
        "api_password_access": "true",
        "accepted_api_agreement": true
      },
      "cdn": {
        "hosts": [
          {
            "url": "https://p18.zdassets.com",
            "name": "default"
          },
          {
            "url": "https://d2y9oszrd3dhjh.cloudfront.net",
            "name": "cloudfront"
          }
        ],
        "cdn_provider": "default",
        "fallback_cdn_provider": "cloudfront"
      },
      "apps": {
        "use": true,
        "create_public": false,
        "create_private": true
      },
      "chat": {
        "enabled": false,
        "available": true,
        "integrated": true,
        "welcome_message": "Hi there. How can I help today?",
        "maximum_request_count": 1
      },
      "rule": {
        "macro_order": "alphabetical",
        "macro_most_used": true,
        "using_skill_based_routing": false,
        "skill_based_filtered_views": []
      },
      "user": {
        "tagging": true,
        "language_selection": true,
        "time_zone_selection": true,
        "have_gravatars_enabled": true,
        "multiple_organizations": false,
        "agent_created_welcome_emails": true,
        "end_user_phone_number_validation": false
      },
      "lotus": {
        "pod_id": 999,
        "reporting": true,
        "prefer_lotus": true
      },
      "voice": {
        "enabled": true,
        "logging": true,
        "outbound_enabled": true,
        "recordings_public": true,
        "maximum_queue_size": 5,
        "uk_mobile_forwarding": true,
        "maximum_queue_wait_time": 1,
        "agent_wrap_up_after_calls": true,
        "only_during_business_hours": false,
        "agent_confirmation_when_forwarding": true
      },
      "agents": {
        "agent_home": false,
        "focus_mode": false,
        "agent_workspace": false,
        "idle_timeout_enabled": false,
        "unified_agent_statuses": false,
        "aw_self_serve_migration_enabled": true
      },
      "brands": {
        "default_brand_id": 1873,
        "require_brand_on_new_tickets": false
      },
      "groups": {
        "check_group_name_uniqueness": true
      },
      "limits": {
        "attachment_size": 52428800
      },
      "billing": {
        "backend": "zuora"
      },
      "metrics": {
        "account_size": "100-399"
      },
      "routing": {
        "enabled": false,
        "autorouting_tag": "",
        "max_email_capacity": 0,
        "max_messaging_capacity": 0
      },
      "tickets": {
        "tagging": true,
        "status_hold": false,
        "collaboration": true,
        "has_color_text": true,
        "agent_collision": true,
        "list_empty_views": true,
        "allow_group_reset": true,
        "email_attachments": false,
        "rich_text_comments": true,
        "chat_sla_enablement": false,
        "private_attachments": false,
        "emoji_autocompletion": true,
        "agent_ticket_deletion": false,
        "agent_invitation_enabled": true,
        "auto_translation_enabled": false,
        "markdown_ticket_comments": false,
        "assign_tickets_upon_solve": true,
        "using_skill_based_routing": false,
        "comments_public_by_default": true,
        "list_newest_comments_first": true,
        "assign_default_organization": true,
        "light_agent_email_ccs_allowed": false,
        "accepted_new_collaboration_tos": false,
        "maximum_personal_views_to_list": 8,
        "auto_updated_ccs_followers_rules": false,
        "is_first_comment_private_enabled": true,
        "follower_and_email_cc_collaborations": false
      },
      "twitter": {
        "shorten_url": "optional"
      },
      "branding": {
        "text_color": "FFFFFF",
        "favicon_url": null,
        "header_color": "78A300",
        "header_logo_url": null,
        "tab_background_color": "7FA239",
        "page_background_color": "333333"
      },
      "cross_sell": {
        "xsell_source": null,
        "show_chat_tooltip": true
      },
      "onboarding": {
        "product_sign_up": null,
        "onboarding_segments": null,
        "checklist_onboarding_version": 2
      },
      "statistics": {
        "forum": true,
        "search": true,
        "rule_usage": true
      },
      "google_apps": {
        "has_google_apps": false,
        "has_google_apps_admin": false
      },
      "ticket_form": {
        "ticket_forms_instructions": "Please choose your issue below",
        "raw_ticket_forms_instructions": "Please choose your issue below"
      },
      "localization": {
        "locale_ids": [
          1042
        ]
      },
      "active_features": {
        "chat": false,
        "voice": true,
        "explore": true,
        "sandbox": false,
        "twitter": true,
        "facebook": false,
        "insights": false,
        "markdown": false,
        "allow_ccs": true,
        "is_abusive": false,
        "google_login": false,
        "light_agents": false,
        "ticket_forms": true,
        "user_tagging": true,
        "bcc_archiving": false,
        "twitter_login": false,
        "business_hours": false,
        "facebook_login": false,
        "on_hold_status": false,
        "ticket_tagging": true,
        "forum_analytics": true,
        "user_org_fields": true,
        "agent_forwarding": false,
        "csat_reason_code": false,
        "dynamic_contents": false,
        "topic_suggestion": false,
        "automatic_answers": false,
        "benchmark_opt_out": false,
        "fallback_composer": false,
        "advanced_analytics": false,
        "custom_dkim_domain": true,
        "chat_about_my_ticket": false,
        "customer_satisfaction": false,
        "good_data_and_explore": false,
        "rich_content_in_emails": true,
        "satisfaction_prediction": false,
        "customer_context_as_default": false,
        "explore_on_support_ent_plan": false,
        "explore_on_support_pro_plan": false,
        "organization_access_enabled": true,
        "suspended_ticket_notification": false,
        "allow_email_template_customization": true
      },
      "side_conversations": {
        "email_channel": false,
        "slack_channel": false,
        "msteams_channel": false,
        "tickets_channel": false,
        "show_in_context_panel": false
      },
      "ticket_sharing_partners": {
        "support_addresses": [
          "support@grokpetre.zendesk.com"
        ]
      },
      "gooddata_advanced_analytics": {
        "enabled": true
      }
    }
  },
  "properties": {
    "settings": {
      "$ref": "#/components/schemas/AccountSettingsObject"
    }
  }
}
object AccountSettingsRoutingObject
{
  "type": "object",
  "properties": {
    "enabled": {
      "type": "boolean"
    },
    "autorouting_tag": {
      "type": "string"
    },
    "max_email_capacity": {
      "type": "integer"
    },
    "max_messaging_capacity": {
      "type": "integer"
    },
    "reassignment_talk_timeout": {
      "type": "integer"
    },
    "reassignment_messaging_enabled": {
      "type": "boolean"
    },
    "reassignment_messaging_timeout": {
      "type": "integer"
    }
  },
  "description": "Configuration for routing. See [Routing](https://developer.zendesk.com)"
}
object AccountSettingsRuleObject
{
  "type": "object",
  "properties": {
    "macro_order": {
      "type": "string"
    },
    "macro_most_used": {
      "type": "boolean"
    },
    "using_skill_based_routing": {
      "type": "boolean"
    },
    "skill_based_filtered_views": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "description": "Rules settings for triggers, macros, views, and automations. See [Rules](https://developer.zendesk.com)"
}
object AccountSettingsSideConversationsObject
{
  "type": "object",
  "properties": {
    "email_channel": {
      "type": "boolean"
    },
    "slack_channel": {
      "type": "boolean"
    },
    "msteams_channel": {
      "type": "boolean"
    },
    "tickets_channel": {
      "type": "boolean"
    },
    "show_in_context_panel": {
      "type": "boolean"
    }
  },
  "description": "Side conversations settings"
}
object AccountSettingsStatisticsObject
{
  "type": "object",
  "properties": {
    "forum": {
      "type": "boolean"
    },
    "search": {
      "type": "boolean"
    },
    "rule_usage": {
      "type": "boolean"
    }
  },
  "description": "Account statistics settings. See [Statistics](https://developer.zendesk.com)"
}
object AccountSettingsTicketFormObject
{
  "type": "object",
  "properties": {
    "ticket_forms_instructions": {
      "type": "string"
    },
    "raw_ticket_forms_instructions": {
      "type": "string"
    }
  },
  "description": "Ticket form settings. See [Ticket Form](https://developer.zendesk.com)"
}
object AccountSettingsTicketObject
{
  "type": "object",
  "properties": {
    "tagging": {
      "type": "boolean"
    },
    "status_hold": {
      "type": "boolean"
    },
    "collaboration": {
      "type": "boolean"
    },
    "has_color_text": {
      "type": "boolean"
    },
    "agent_collision": {
      "type": "boolean"
    },
    "list_empty_views": {
      "type": "boolean"
    },
    "allow_group_reset": {
      "type": "boolean"
    },
    "email_attachments": {
      "type": "boolean"
    },
    "rich_text_comments": {
      "type": "boolean"
    },
    "chat_sla_enablement": {
      "type": "boolean"
    },
    "private_attachments": {
      "type": "boolean"
    },
    "emoji_autocompletion": {
      "type": "boolean"
    },
    "agent_ticket_deletion": {
      "type": "boolean"
    },
    "agent_invitation_enabled": {
      "type": "boolean"
    },
    "auto_translation_enabled": {
      "type": "boolean"
    },
    "markdown_ticket_comments": {
      "type": "boolean"
    },
    "assign_tickets_upon_solve": {
      "type": "boolean"
    },
    "using_skill_based_routing": {
      "type": "boolean"
    },
    "comments_public_by_default": {
      "type": "boolean"
    },
    "list_newest_comments_first": {
      "type": "boolean"
    },
    "assign_default_organization": {
      "type": "boolean"
    },
    "light_agent_email_ccs_allowed": {
      "type": "boolean"
    },
    "accepted_new_collaboration_tos": {
      "type": "boolean"
    },
    "maximum_personal_views_to_list": {
      "type": "integer"
    },
    "auto_updated_ccs_followers_rules": {
      "type": "boolean"
    },
    "is_first_comment_private_enabled": {
      "type": "boolean"
    },
    "follower_and_email_cc_collaborations": {
      "type": "boolean"
    }
  },
  "description": "Ticket settings. See [Tickets](https://developer.zendesk.com)"
}
object AccountSettingsTicketSharingPartnersObject
{
  "type": "object",
  "properties": {
    "support_addresses": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "description": "Ticket sharing partners settings. See [Ticket Sharing Partners](https://developer.zendesk.com)"
}
object AccountSettingsTwitterObject
{
  "type": "object",
  "properties": {
    "shorten_url": {
      "type": "string"
    }
  },
  "description": "X (formerly Twitter) settings. See [X](https://developer.zendesk.com)"
}
object AccountSettingsUserObject
{
  "type": "object",
  "properties": {
    "tagging": {
      "type": "boolean"
    },
    "language_selection": {
      "type": "boolean"
    },
    "time_zone_selection": {
      "type": "boolean"
    },
    "have_gravatars_enabled": {
      "type": "boolean"
    },
    "multiple_organizations": {
      "type": "boolean"
    },
    "agent_created_welcome_emails": {
      "type": "boolean"
    },
    "end_user_phone_number_validation": {
      "type": "boolean"
    }
  },
  "description": "User settings. See [Users](https://developer.zendesk.com)"
}
object AccountSettingsVoiceObject
{
  "type": "object",
  "properties": {
    "enabled": {
      "type": "boolean"
    },
    "logging": {
      "type": "boolean"
    },
    "outbound_enabled": {
      "type": "boolean"
    },
    "recordings_public": {
      "type": "boolean"
    },
    "maximum_queue_size": {
      "type": "integer"
    },
    "uk_mobile_forwarding": {
      "type": "boolean"
    },
    "maximum_queue_wait_time": {
      "type": "integer"
    },
    "agent_wrap_up_after_calls": {
      "type": "boolean"
    },
    "only_during_business_hours": {
      "type": "boolean"
    },
    "agent_confirmation_when_forwarding": {
      "type": "boolean"
    }
  },
  "description": "Zendesk Talk settings. See [Voice](https://developer.zendesk.com)"
}
object ActionObject
{
  "type": "object",
  "properties": {
    "field": {
      "type": "string",
      "description": "The name of a ticket field to modify"
    },
    "value": {
      "type": "string",
      "description": "The new value of the field"
    }
  }
}
object ActionsObject
{
  "type": "object",
  "properties": {
    "actions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ActionObject"
      }
    }
  }
}
object ActivitiesCountResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer"
        },
        "refreshed_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    }
  }
}
object ActivitiesResponse
{
  "type": "object",
  "example": {
    "count": 1,
    "users": [
      {
        "id": 3343,
        "url": "https://example.zendesk.com/api/v2/users/3343.json",
        "name": "Samwise Gamgee",
        "role": "admin",
        "tags": [
          "101"
        ],
        "alias": "test",
        "email": "user@zendesk.com",
        "notes": "test",
        "phone": null,
        "photo": {
          "id": 8730791,
          "url": "https://example.zendesk.com/api/v2/attachments/8730791.json",
          "size": 4566,
          "width": 80,
          "height": 80,
          "inline": false,
          "deleted": false,
          "file_name": "1f84950b8d7949b3.gif",
          "thumbnails": [
            {
              "id": 8730801,
              "url": "https://example.zendesk.com/api/v2/attachments/8730801.json",
              "size": 1517,
              "width": 32,
              "height": 32,
              "inline": false,
              "deleted": false,
              "file_name": "1f84950b8d7949b3_thumb.gif",
              "content_url": "https://example.zendesk.com/system/photos/8730801/1f84950b8d7949b3_thumb.gif",
              "content_type": "image/gif",
              "mapped_content_url": "https://example.zendesk.com/system/photos/8730801/1f84950b8d7949b3_thumb.gif"
            }
          ],
          "content_url": "https://example.zendesk.com/system/photos/8730791/1f84950b8d7949b3.gif",
          "content_type": "image/gif",
          "mapped_content_url": "https://example.zendesk.com/system/photos/8730791/1f84950b8d7949b3.gif"
        },
        "active": true,
        "locale": "en-gb",
        "shared": false,
        "details": "",
        "verified": true,
        "locale_id": 5,
        "moderator": true,
        "role_type": null,
        "signature": "test",
        "suspended": false,
        "time_zone": "American Samoa",
        "created_at": "2017-08-14T20:13:53Z",
        "report_csv": true,
        "updated_at": "2020-11-17T00:33:55Z",
        "external_id": "oev7jj",
        "user_fields": {
          "skittles": "2018-09-14T00:00:00+00:00",
          "user_field_1": "101",
          "its_remember_september": null
        },
        "shared_agent": false,
        "last_login_at": "2020-11-16T22:57:45Z",
        "custom_role_id": null,
        "iana_time_zone": "Pacific/Pago_Pago",
        "organization_id": 1873,
        "default_group_id": 1873,
        "restricted_agent": false,
        "ticket_restriction": null,
        "shared_phone_number": null,
        "only_private_comments": false,
        "two_factor_auth_enabled": null
      }
    ],
    "actors": [
      {
        "id": 158488612,
        "url": "https://example.zendesk.com/api/v2/users/158488612.json",
        "name": "Tedd",
        "role": "admin",
        "tags": [],
        "alias": "",
        "email": "cgoddard+ted@zendesk.com",
        "notes": "",
        "phone": null,
        "photo": null,
        "active": true,
        "locale": "en-gb",
        "shared": false,
        "details": "",
        "verified": true,
        "locale_id": 5,
        "moderator": true,
        "role_type": null,
        "signature": "",
        "suspended": false,
        "time_zone": "Alaska",
        "created_at": "2020-11-17T00:32:12Z",
        "report_csv": true,
        "updated_at": "2020-11-17T00:34:38Z",
        "external_id": null,
        "user_fields": {
          "skittles": null,
          "user_field_1": null,
          "its_remember_september": null
        },
        "shared_agent": false,
        "last_login_at": "2020-11-17T00:33:44Z",
        "custom_role_id": null,
        "iana_time_zone": "America/Juneau",
        "organization_id": null,
        "default_group_id": 1873,
        "restricted_agent": false,
        "ticket_restriction": null,
        "shared_phone_number": null,
        "only_private_comments": false,
        "two_factor_auth_enabled": null
      }
    ],
    "next_page": null,
    "activities": [
      {
        "id": 29183462,
        "url": "https://example.zendesk.com/api/v2/activities/29183462.json",
        "user": {
          "id": 3343,
          "url": "https://example.zendesk.com/api/v2/users/3343.json",
          "name": "Samwise Gamgee",
          "role": "admin",
          "tags": [
            "101"
          ],
          "alias": "test",
          "email": "user@zendesk.com",
          "notes": "test",
          "phone": null,
          "photo": {
            "id": 8730791,
            "url": "https://example.zendesk.com/api/v2/attachments/8730791.json",
            "size": 4566,
            "width": 80,
            "height": 80,
            "inline": false,
            "deleted": false,
            "file_name": "1f84950b8d7949b3.gif",
            "thumbnails": [
              {
                "id": 8730801,
                "url": "https://example.zendesk.com/api/v2/attachments/8730801.json",
                "size": 1517,
                "width": 32,
                "height": 32,
                "inline": false,
                "deleted": false,
                "file_name": "1f84950b8d7949b3_thumb.gif",
                "content_url": "https://example.zendesk.com/system/photos/8730801/1f84950b8d7949b3_thumb.gif",
                "content_type": "image/gif",
                "mapped_content_url": "https://example.zendesk.com/system/photos/8730801/1f84950b8d7949b3_thumb.gif"
              }
            ],
            "content_url": "https://example.zendesk.com/system/photos/8730791/1f84950b8d7949b3.gif",
            "content_type": "image/gif",
            "mapped_content_url": "https://example.zendesk.com/system/photos/8730791/1f84950b8d7949b3.gif"
          },
          "active": true,
          "locale": "en-gb",
          "shared": false,
          "details": "",
          "verified": true,
          "locale_id": 5,
          "moderator": true,
          "role_type": null,
          "signature": "test",
          "suspended": false,
          "time_zone": "American Samoa",
          "created_at": "2017-08-14T20:13:53Z",
          "report_csv": true,
          "updated_at": "2020-11-17T00:33:55Z",
          "external_id": "oev7jj",
          "user_fields": {
            "skittles": "2018-09-14T00:00:00+00:00",
            "user_field_1": "101",
            "its_remember_september": null
          },
          "shared_agent": false,
          "last_login_at": "2020-11-16T22:57:45Z",
          "custom_role_id": null,
          "iana_time_zone": "Pacific/Pago_Pago",
          "organization_id": 1873,
          "default_group_id": 1873,
          "restricted_agent": false,
          "ticket_restriction": null,
          "shared_phone_number": null,
          "only_private_comments": false,
          "two_factor_auth_enabled": null
        },
        "verb": "tickets.assignment",
        "actor": {
          "id": 158488612,
          "url": "https://example.zendesk.com/api/v2/users/158488612.json",
          "name": "Tedd",
          "role": "admin",
          "tags": [],
          "alias": "",
          "email": "cgoddard+ted@zendesk.com",
          "notes": "",
          "phone": null,
          "photo": null,
          "active": true,
          "locale": "en-gb",
          "shared": false,
          "details": "",
          "verified": true,
          "locale_id": 5,
          "moderator": true,
          "role_type": null,
          "signature": "",
          "suspended": false,
          "time_zone": "Alaska",
          "created_at": "2020-11-17T00:32:12Z",
          "report_csv": true,
          "updated_at": "2020-11-17T00:34:38Z",
          "external_id": null,
          "user_fields": {
            "skittles": null,
            "user_field_1": null,
            "its_remember_september": null
          },
          "shared_agent": false,
          "last_login_at": "2020-11-17T00:33:44Z",
          "custom_role_id": null,
          "iana_time_zone": "America/Juneau",
          "organization_id": null,
          "default_group_id": 1873,
          "restricted_agent": false,
          "ticket_restriction": null,
          "shared_phone_number": null,
          "only_private_comments": false,
          "two_factor_auth_enabled": null
        },
        "title": "Tedd assigned ticket #1521 to you.",
        "object": {
          "ticket": {
            "id": 1521,
            "subject": "test"
          }
        },
        "target": {
          "ticket": {
            "id": 1521,
            "subject": "test"
          }
        },
        "user_id": 3343,
        "actor_id": 158488612,
        "created_at": "2020-11-17T00:34:40Z",
        "updated_at": "2020-11-17T00:34:40Z"
      }
    ],
    "previous_page": null
  },
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true
    },
    "users": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "readOnly": true
    },
    "actors": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "readOnly": true
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "activities": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ActivityObject"
      },
      "readOnly": true
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    }
  }
}
object ActivityObject
{
  "type": "object",
  "title": "Ticket Activities",
  "example": {
    "id": 35,
    "url": "https://company.zendesk.com/api/v2/activities/35.json",
    "user": {
      "id": 223443,
      "name": "Johnny Agent"
    },
    "verb": "tickets.assignment",
    "actor": {
      "id": 8678530,
      "name": "James A. Rosen"
    },
    "title": "John Hopeful assigned ticket #123 to you",
    "object": {},
    "target": {},
    "user_id": 29451,
    "actor_id": 23546,
    "created_at": "2019-03-05T10:38:52Z",
    "updated_at": "2019-03-05T10:38:52Z"
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned on creation"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of the activity"
    },
    "user": {
      "$ref": "#/components/schemas/UserObject"
    },
    "verb": {
      "type": "string",
      "readOnly": true,
      "description": "The type of activity. Can be \"tickets.assignment\", \"tickets.comment\", or \"tickets.priority_increase\""
    },
    "actor": {
      "$ref": "#/components/schemas/UserObject"
    },
    "title": {
      "type": "string",
      "readOnly": true,
      "description": "Description of the activity"
    },
    "object": {
      "type": "object",
      "readOnly": true,
      "description": "The content of the activity. Can be a ticket, comment, or change.",
      "additionalProperties": true
    },
    "target": {
      "type": "object",
      "readOnly": true,
      "description": "The target of the activity, a ticket.",
      "additionalProperties": true
    },
    "user_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of the agent making the request"
    },
    "actor_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of the user responsible for the ticket activity. An `actor_id` of \"-1\" is a Zendesk system user, such as an automations action."
    },
    "created_at": {
      "type": "string",
      "readOnly": true,
      "description": "When the record was created"
    },
    "updated_at": {
      "type": "string",
      "readOnly": true,
      "description": "When the record was last updated"
    }
  },
  "x-konfig-properties": {
    "user": {
      "type": "object",
      "readOnly": true,
      "description": "The full user record of the agent making the request. See [Users](https://developer.zendesk.com)"
    },
    "actor": {
      "type": "object",
      "readOnly": true,
      "description": "The full user record of the user responsible for the ticket activity. See [Users](https://developer.zendesk.com)"
    }
  }
}
object ActivityResponse
{
  "type": "object",
  "example": {
    "activity": {
      "id": 29183462,
      "url": "https://example.zendesk.com/api/v2/activities/29183462.json",
      "user": {
        "id": 3343,
        "url": "https://example.zendesk.com/api/v2/users/3343.json",
        "name": "Samwise Gamgee",
        "role": "admin",
        "tags": [
          "101"
        ],
        "alias": "test",
        "email": "user@zendesk.com",
        "notes": "test",
        "phone": null,
        "photo": {
          "id": 8730791,
          "url": "https://example.zendesk.com/api/v2/attachments/8730791.json",
          "size": 4566,
          "width": 80,
          "height": 80,
          "inline": false,
          "deleted": false,
          "file_name": "1f84950b8d7949b3.gif",
          "thumbnails": [
            {
              "id": 8730801,
              "url": "https://example.zendesk.com/api/v2/attachments/8730801.json",
              "size": 1517,
              "width": 32,
              "height": 32,
              "inline": false,
              "deleted": false,
              "file_name": "1f84950b8d7949b3_thumb.gif",
              "content_url": "https://example.zendesk.com/system/photos/8730801/1f84950b8d7949b3_thumb.gif",
              "content_type": "image/gif",
              "mapped_content_url": "https://example.zendesk.com/system/photos/8730801/1f84950b8d7949b3_thumb.gif"
            }
          ],
          "content_url": "https://example.zendesk.com/system/photos/8730791/1f84950b8d7949b3.gif",
          "content_type": "image/gif",
          "mapped_content_url": "https://example.zendesk.com/system/photos/8730791/1f84950b8d7949b3.gif"
        },
        "active": true,
        "locale": "en-gb",
        "shared": false,
        "details": "",
        "verified": true,
        "locale_id": 5,
        "moderator": true,
        "role_type": null,
        "signature": "test",
        "suspended": false,
        "time_zone": "American Samoa",
        "created_at": "2017-08-14T20:13:53Z",
        "report_csv": true,
        "updated_at": "2020-11-17T00:33:55Z",
        "external_id": "oev7jj",
        "user_fields": {
          "skittles": "2018-09-14T00:00:00+00:00",
          "user_field_1": "101",
          "its_remember_september": null
        },
        "shared_agent": false,
        "last_login_at": "2020-11-16T22:57:45Z",
        "custom_role_id": null,
        "iana_time_zone": "Pacific/Pago_Pago",
        "organization_id": 1873,
        "default_group_id": 1873,
        "restricted_agent": false,
        "ticket_restriction": null,
        "shared_phone_number": null,
        "only_private_comments": false,
        "two_factor_auth_enabled": null
      },
      "verb": "tickets.assignment",
      "actor": {
        "id": 158488612,
        "url": "https://example.zendesk.com/api/v2/users/158488612.json",
        "name": "Tedd",
        "role": "admin",
        "tags": [],
        "alias": "",
        "email": "cgoddard+ted@zendesk.com",
        "notes": "",
        "phone": null,
        "photo": null,
        "active": true,
        "locale": "en-gb",
        "shared": false,
        "details": "",
        "verified": true,
        "locale_id": 5,
        "moderator": true,
        "role_type": null,
        "signature": "",
        "suspended": false,
        "time_zone": "Alaska",
        "created_at": "2020-11-17T00:32:12Z",
        "report_csv": true,
        "updated_at": "2020-11-17T00:34:38Z",
        "external_id": null,
        "user_fields": {
          "skittles": null,
          "user_field_1": null,
          "its_remember_september": null
        },
        "shared_agent": false,
        "last_login_at": "2020-11-17T00:33:44Z",
        "custom_role_id": null,
        "iana_time_zone": "America/Juneau",
        "organization_id": null,
        "default_group_id": 1873,
        "restricted_agent": false,
        "ticket_restriction": null,
        "shared_phone_number": null,
        "only_private_comments": false,
        "two_factor_auth_enabled": null
      },
      "title": "Tedd assigned ticket #1521 to you.",
      "object": {
        "ticket": {
          "id": 1521,
          "subject": "test"
        }
      },
      "target": {
        "ticket": {
          "id": 1521,
          "subject": "test"
        }
      },
      "user_id": 3343,
      "actor_id": 158488612,
      "created_at": "2020-11-17T00:34:40Z",
      "updated_at": "2020-11-17T00:34:40Z"
    }
  },
  "properties": {
    "activity": {
      "$ref": "#/components/schemas/ActivityObject"
    }
  }
}
object AssigneeFieldAssignableAgentObject
{
  "type": "object",
  "title": "AssigneeFieldAssignableAgents",
  "example": {
    "id": 6473829100,
    "name": "Joe Smith",
    "avatar_url": "https://z3n-example.zendesk.com/system/photos/900005192023/my_profile.png"
  },
  "properties": {
    "id": {
      "type": "integer",
      "description": "Agent Support ID"
    },
    "name": {
      "type": "string",
      "description": "Name of the agent"
    },
    "avatar_url": {
      "type": "string",
      "nullable": true,
      "description": "URL of Agent's avatar"
    }
  }
}
object AssigneeFieldAssignableGroupAgentsResponse
{
  "type": "object",
  "example": {
    "count": 3,
    "agents": [
      {
        "id": 6473829100,
        "name": "Joe Smith",
        "avatar_url": "https://z3n-example.zendesk.com/system/photos/900005192023/my_profile.png"
      },
      {
        "id": 9182736400,
        "name": "Jane Doe",
        "avatar_url": "https://z3n-example.zendesk.com/system/photos/412005192023/my_profile.png"
      },
      {
        "id": 1928373460,
        "name": "Cookie Monster",
        "avatar_url": "https://z3n-example.zendesk.com/system/photos/887005192023/my_profile.png"
      }
    ],
    "next_page": null,
    "previous_page": null
  },
  "properties": {
    "count": {
      "type": "integer",
      "description": "Number of agents listed in `agents` property."
    },
    "agents": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AssigneeFieldAssignableAgentObject"
      }
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    }
  }
}
object AssigneeFieldAssignableGroupObject
{
  "type": "object",
  "title": "AssigneeFieldAssignableGroups",
  "example": {
    "id": 9182736455,
    "name": "Engineering",
    "description": "Engineering team for bugs"
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Group ID"
    },
    "name": {
      "type": "string",
      "readOnly": true,
      "description": "Name of the group"
    },
    "description": {
      "type": "string",
      "readOnly": true,
      "description": "Description of the group"
    }
  }
}
object AssigneeFieldAssignableGroupsAndAgentsSearchResponse
{
  "type": "object",
  "example": {
    "count": 2,
    "agents": [
      {
        "id": 8392017465,
        "name": "Sam Technologist",
        "group": "Tech",
        "group_id": 6574839201,
        "photo_url": "https://z3n-example.zendesk.com/system/photos/410305192023/my_profile.png"
      }
    ],
    "groups": [
      {
        "id": 6574839201,
        "name": "Tech"
      }
    ]
  },
  "properties": {
    "count": {
      "type": "integer",
      "description": "Number of agents + groups listed from search result."
    },
    "agents": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AssigneeFieldAssignableSearchAgentObject"
      }
    },
    "groups": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AssigneeFieldAssignableSearchGroupObject"
      }
    }
  }
}
object AssigneeFieldAssignableGroupsResponse
{
  "type": "object",
  "example": {
    "count": 3,
    "groups": [
      {
        "id": 9182736455,
        "name": "Group for Bugs for Engineering",
        "description": "Engineering"
      },
      {
        "id": 1928374655,
        "name": "Group for feature requests",
        "description": "Product"
      },
      {
        "id": 5519283746,
        "name": "Group for customer inquiries",
        "description": "Customer Support"
      }
    ],
    "next_page": null,
    "previous_page": null
  },
  "properties": {
    "count": {
      "type": "integer",
      "description": "Number of groups listed in `groups` property."
    },
    "groups": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AssigneeFieldAssignableGroupObject"
      }
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    }
  }
}
object AssigneeFieldAssignableSearchAgentObject
{
  "type": "object",
  "example": {
    "id": 6473829100,
    "name": "Joe Smith",
    "group": "Engineering",
    "group_id": 9182736455,
    "photo_url": "https://z3n-example.zendesk.com/system/photos/900005192023/my_profile.png"
  },
  "properties": {
    "id": {
      "type": "integer",
      "description": "Agent ID"
    },
    "name": {
      "type": "string",
      "description": "Name of the agent"
    },
    "group": {
      "type": "string",
      "description": "Name of the agent's group"
    },
    "group_id": {
      "type": "integer",
      "description": "Agent's Group ID"
    },
    "photo_url": {
      "type": "string",
      "nullable": true,
      "description": "URL of Avatar"
    }
  }
}
object AssigneeFieldAssignableSearchGroupObject
{
  "type": "object",
  "example": {
    "id": 9182736455,
    "name": "Engineering"
  },
  "properties": {
    "id": {
      "type": "integer",
      "description": "Group ID"
    },
    "name": {
      "type": "string",
      "description": "Name of the group"
    }
  }
}
object AttachmentBaseObject
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "A URL to access the attachment details"
    },
    "size": {
      "type": "integer",
      "readOnly": true,
      "description": "The size of the image file in bytes"
    },
    "width": {
      "type": "string",
      "readOnly": true,
      "description": "The width of the image file in pixels. If width is unknown, returns null"
    },
    "height": {
      "type": "string",
      "readOnly": true,
      "description": "The height of the image file in pixels. If height is unknown, returns null"
    },
    "inline": {
      "type": "boolean",
      "readOnly": true,
      "description": "If true, the attachment is excluded from the attachment list and the attachment's URL\ncan be referenced within the comment of a ticket. Default is false\n"
    },
    "deleted": {
      "type": "boolean",
      "readOnly": true,
      "description": "If true, the attachment has been deleted"
    },
    "file_name": {
      "type": "string",
      "readOnly": true,
      "description": "The name of the image file"
    },
    "content_url": {
      "type": "string",
      "readOnly": true,
      "description": "A full URL where the attachment image file can be downloaded. The file may be hosted externally so take care not to inadvertently send Zendesk authentication credentials. See [Working with url properties](https://developer.zendesk.com)"
    },
    "content_type": {
      "type": "string",
      "readOnly": true,
      "description": "The content type of the image. Example value: \"image/png\""
    },
    "mapped_content_url": {
      "type": "string",
      "readOnly": true,
      "description": "The URL the attachment image file has been mapped to"
    },
    "malware_scan_result": {
      "type": "string",
      "readOnly": true,
      "description": "The result of the malware scan. There is a delay between the time the attachment is uploaded and when the malware scan is completed. Usually the scan is done within a few seconds, but high load conditions can delay the scan results. Possible values: \"malware_found\", \"malware_not_found\", \"failed_to_scan\", \"not_scanned\""
    },
    "malware_access_override": {
      "type": "boolean",
      "readOnly": true,
      "description": "If true, you can download an attachment flagged as malware. If false, you can't download such an attachment."
    }
  }
}
object AttachmentObject
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/AttachmentBaseObject"
    },
    {
      "$ref": "#/components/schemas/AttachmentThumbnails"
    }
  ],
  "example": {
    "id": 928374,
    "size": 166144,
    "file_name": "my_funny_profile_pic.png",
    "thumbnails": [
      {
        "id": 928375,
        "size": 58298,
        "file_name": "my_funny_profile_pic_thumb.png",
        "content_url": "https://company.zendesk.com/attachments/my_funny_profile_pic_thumb.png",
        "content_type": "image/png"
      }
    ],
    "content_url": "https://company.zendesk.com/attachments/my_funny_profile_pic.png",
    "content_type": "image/png"
  },
  "description": "A file represented as an [Attachment](https://developer.zendesk.com) object"
}
object AttachmentResponse
{
  "type": "object",
  "properties": {
    "attachment": {
      "$ref": "#/components/schemas/AttachmentObject"
    }
  }
}
object AttachmentThumbnails
{
  "type": "object",
  "properties": {
    "thumbnails": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AttachmentBaseObject"
      },
      "readOnly": true,
      "description": "An array of attachment objects. Note that photo thumbnails do not have thumbnails"
    }
  }
}
object AttachmentUpdateInput
{
  "type": "object",
  "properties": {
    "malware_access_override": {
      "type": "boolean",
      "description": "If true, allows access to attachments with detected malware."
    }
  }
}
object AttachmentUpdateRequest
{
  "type": "object",
  "properties": {
    "attachment": {
      "$ref": "#/components/schemas/AttachmentUpdateInput"
    }
  }
}
object AttachmentUploadResponse
{
  "type": "object",
  "properties": {
    "upload": {
      "type": "object",
      "properties": {
        "token": {
          "type": "string",
          "readOnly": true,
          "description": "Token for subsequent request"
        },
        "attachment": {
          "$ref": "#/components/schemas/AttachmentObject"
        },
        "attachments": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/AttachmentObject"
          }
        }
      }
    }
  }
}
object AuditLogObject
{
  "type": "object",
  "example": {
    "id": 498483,
    "url": "https://company.zendesk.com/api/v2/audit_logs/498483.json",
    "action": "update",
    "actor_id": 1234,
    "source_id": 3456,
    "actor_name": "Sameer Patel",
    "created_at": "2012-03-05T11:32:44Z",
    "ip_address": "209.119.38.228",
    "source_type": "user",
    "action_label": "Updated",
    "source_label": "John Doe",
    "change_description": "Role changed from Administrator to End User"
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id automatically assigned upon creation"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The URL to access the audit log"
    },
    "action": {
      "type": "string",
      "readOnly": true,
      "description": "Type of change made. Possible values are \"create\", \"destroy\", \"exported\", \"login\", and \"update\"\n"
    },
    "actor_id": {
      "type": "integer",
      "readOnly": true,
      "description": "id of the user or system that initiated the change"
    },
    "source_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of the item being audited"
    },
    "actor_name": {
      "type": "string",
      "readOnly": true,
      "description": "Name of the user or system that initiated the change"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the audit got created"
    },
    "ip_address": {
      "type": "string",
      "readOnly": true,
      "description": "The IP address of the user doing the audit"
    },
    "source_type": {
      "type": "string",
      "readOnly": true,
      "description": "Item type being audited. Typically describes the system where the change\nwas initiated. Possible values vary based on your account's Zendesk\nproducts and activity. Common values include \"apitoken\", \"rule\", \"ticket\",\n\"user\", and \"zendesk/app_market/app\". The \"rule\" value is used for\n[automations](https://support.zendesk.com/hc/en-us/articles/4408832701850),\n[macros](https://support.zendesk.com/hc/en-us/articles/4408844187034),\n[triggers](https://support.zendesk.com/hc/en-us/articles/4408822236058),\n[views](https://support.zendesk.com/hc/en-us/articles/4408888828570),\nand other automated business rules\n"
    },
    "action_label": {
      "type": "string",
      "readOnly": true,
      "description": "Localized string of action field"
    },
    "source_label": {
      "type": "string",
      "readOnly": true,
      "description": "The name of the item being audited"
    },
    "change_description": {
      "type": "string",
      "readOnly": true,
      "description": "The description of the change that occurred"
    }
  }
}
object AuditLogResponse
{
  "type": "object",
  "properties": {
    "audit_log": {
      "$ref": "#/components/schemas/AuditLogObject"
    }
  }
}
string AuditLogsExportLogsResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object AuditLogsResponse
{
  "type": "object",
  "properties": {
    "audit_logs": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AuditLogObject"
      }
    }
  }
}
object AuditObject
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true
    },
    "via": {
      "$ref": "#/components/schemas/ViaObject"
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "body": {
            "type": "string",
            "readOnly": true
          },
          "type": {
            "type": "string",
            "readOnly": true
          },
          "value": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              }
            ]
          },
          "field_name": {
            "type": "string",
            "readOnly": true
          }
        }
      },
      "readOnly": true
    },
    "metadata": {
      "type": "object",
      "readOnly": true
    },
    "author_id": {
      "type": "integer",
      "readOnly": true
    },
    "ticket_id": {
      "type": "integer",
      "readOnly": true
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true
    }
  }
}
object AuthorObject
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "The author id"
    },
    "name": {
      "type": "string",
      "readOnly": true,
      "description": "The author name"
    },
    "email": {
      "type": "string",
      "readOnly": true,
      "description": "The author email"
    }
  }
}
object AutomationObject
{
  "type": "object",
  "example": {
    "id": 9873843,
    "title": "Roger Wilco",
    "active": true,
    "actions": [
      {
        "field": "priority",
        "value": "high"
      }
    ],
    "default": false,
    "position": 8,
    "raw_title": "Roger Wilco",
    "conditions": {
      "all": [
        {
          "field": "status",
          "value": "open",
          "operator": "is"
        },
        {
          "field": "priority",
          "value": "high",
          "operator": "less_than"
        }
      ],
      "any": []
    }
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when created"
    },
    "title": {
      "type": "string",
      "description": "The title of the automation"
    },
    "active": {
      "type": "boolean",
      "description": "Whether the automation is active"
    },
    "actions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ActionObject"
      },
      "description": "An object describing what the automation will do. See [Actions reference](https://developer.zendesk.com)"
    },
    "default": {
      "type": "boolean",
      "readOnly": true,
      "description": "If true, the automation is a default automation"
    },
    "position": {
      "type": "integer",
      "description": "The position of the automation which specifies the order it will be executed"
    },
    "raw_title": {
      "type": "string",
      "readOnly": true,
      "description": "The raw title of the automation"
    },
    "conditions": {
      "$ref": "#/components/schemas/ConditionsObject"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the automation was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the last update of the automation"
    }
  }
}
object AutomationResponse
{
  "type": "object",
  "properties": {
    "automation": {
      "$ref": "#/components/schemas/AutomationObject"
    }
  }
}
object AutomationsResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "automations": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AutomationObject"
      }
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    }
  }
}
string BasicsCreateVoiceTicketResponse
{
  "type": "string",
  "example": "",
  "description": "Invalid attribute"
}
string BasicsOpenAgentTicketDisplay404Response
{
  "type": "string",
  "example": "",
  "description": "Invalid attribute"
}
string BasicsOpenAgentTicketDisplayResponse
{
  "type": "string",
  "example": "",
  "description": "empty"
}
string BasicsOpenUserProfile404Response
{
  "type": "string",
  "example": "",
  "description": "Invalid attribute"
}
string BasicsOpenUserProfileResponse
{
  "type": "string",
  "example": "",
  "description": "empty"
}
object BatchErrorItem
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/Error"
    },
    {
      "type": "object",
      "properties": {
        "trigger_id": {
          "type": "string"
        }
      }
    }
  ]
}
object BatchJobRequest
{
  "type": "object",
  "properties": {
    "job": {
      "type": "object",
      "properties": {
        "items": {
          "type": "object",
          "properties": {
            "triggers": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/TriggerBatchRequest"
              }
            },
            "trigger_categories": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/TriggerCategoryBatchRequest"
              }
            }
          }
        },
        "action": {
          "enum": [
            "patch"
          ],
          "type": "string"
        }
      }
    }
  }
}
object BatchJobResponse
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/BatchErrorItem"
      }
    },
    "status": {
      "enum": [
        "complete",
        "failed"
      ],
      "type": "string"
    },
    "results": {
      "type": "object",
      "properties": {
        "triggers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/TriggerObject"
          }
        },
        "trigger_categories": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/TriggerCategory"
          }
        }
      }
    }
  }
}
object BookmarkCreateRequest
{
  "type": "object",
  "properties": {
    "bookmark": {
      "$ref": "#/components/schemas/BookmarkInput"
    }
  }
}
object BookmarkInput
{
  "type": "object",
  "properties": {
    "ticket_id": {
      "type": "integer",
      "description": "The id of the ticket the bookmark is for."
    }
  }
}
object BookmarkObject
{
  "type": "object",
  "title": "Bookmarks",
  "example": {
    "id": 35436,
    "url": "https://{subdomain}.zendesk.com/api/v2/bookmarks/35436.json",
    "ticket": {
      "id": 60,
      "subject": "Help, my printer is on fire!",
      "priority": "high",
      "description": "The fire is very colorful.",
      "requester_id": 156
    },
    "created_at": "2014-11-20T22:55:29Z"
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when the bookmark is created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of this bookmark"
    },
    "ticket": {
      "$ref": "#/components/schemas/TicketObject"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the bookmark was created"
    }
  },
  "x-konfig-properties": {
    "ticket": {
      "type": "object",
      "readOnly": true
    }
  }
}
object BookmarkResponse
{
  "type": "object",
  "properties": {
    "bookmark": {
      "$ref": "#/components/schemas/BookmarkObject"
    }
  }
}
object BookmarksResponse
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/OffsetPaginationObject"
    },
    {
      "type": "object",
      "properties": {
        "bookmarks": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/BookmarkObject"
          }
        }
      }
    }
  ],
  "title": "Bookmarks"
}
object BrandCreateRequest
{
  "type": "object",
  "properties": {
    "brand": {
      "$ref": "#/components/schemas/BrandObject"
    }
  }
}
object BrandObject
{
  "type": "object",
  "title": "Brands",
  "example": {
    "id": 47,
    "url": "https://company.zendesk.com/api/v2/brands/47.json",
    "logo": {
      "id": 928374,
      "url": "https://company.zendesk.com/api/v2/attachments/928374.json",
      "size": 166144,
      "file_name": "brand1_logo.png",
      "thumbnails": [
        {
          "id": 928375,
          "url": "https://company.zendesk.com/api/v2/attachments/928375.json",
          "size": 58298,
          "file_name": "brand1_logo_thumb.png",
          "content_url": "https://company.zendesk.com/photos/brand1_logo_thumb.png",
          "content_type": "image/png",
          "mapped_content_url": "https://company.com/photos/brand1_logo_thumb.png"
        },
        {
          "id": 928376,
          "url": "https://company.zendesk.com/api/v2/attachments/928376.json",
          "size": 58298,
          "file_name": "brand1_logo_small.png",
          "content_url": "https://company.zendesk.com/photos/brand1_logo_small.png",
          "content_type": "image/png",
          "mapped_content_url": "https://company.com/photos/brand1_logo_small.png"
        }
      ],
      "content_url": "https://company.zendesk.com/logos/brand1_logo.png",
      "content_type": "image/png"
    },
    "name": "Brand 1",
    "active": true,
    "default": true,
    "brand_url": "https://brand1.com",
    "subdomain": "brand1",
    "created_at": "2012-04-02T22:55:29Z",
    "updated_at": "2012-04-02T22:55:29Z",
    "host_mapping": "brand1.com",
    "has_help_center": true,
    "ticket_form_ids": [
      47,
      33,
      22
    ],
    "help_center_state": "enabled",
    "signature_template": "{{agent.signature}}"
  },
  "required": [
    "name",
    "subdomain"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "The ID automatically assigned when the brand is created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of this brand"
    },
    "logo": {
      "$ref": "#/components/schemas/AttachmentObject"
    },
    "name": {
      "type": "string",
      "description": "The name of the brand"
    },
    "active": {
      "type": "boolean",
      "description": "If the brand is set as active"
    },
    "default": {
      "type": "boolean",
      "description": "Is the brand the default brand for this account"
    },
    "brand_url": {
      "type": "string",
      "description": "The url of the brand"
    },
    "subdomain": {
      "type": "string",
      "description": "The subdomain of the brand"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the brand was created"
    },
    "is_deleted": {
      "type": "boolean",
      "description": "If the brand object is deleted or not"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the last update of the brand"
    },
    "host_mapping": {
      "type": "string",
      "description": "The hostmapping to this brand, if any. Only admins view this property."
    },
    "has_help_center": {
      "type": "boolean",
      "description": "If the brand has a Help Center"
    },
    "ticket_form_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "readOnly": true,
      "description": "The ids of ticket forms that are available for use by a brand"
    },
    "help_center_state": {
      "enum": [
        "enabled",
        "disabled",
        "restricted"
      ],
      "type": "string",
      "readOnly": true,
      "description": "The state of the Help Center"
    },
    "signature_template": {
      "type": "string",
      "description": "The signature template for a brand"
    }
  }
}
object BrandResponse
{
  "type": "object",
  "properties": {
    "brand": {
      "$ref": "#/components/schemas/BrandObject"
    }
  }
}
object BrandUpdateRequest
{
  "type": "object",
  "properties": {
    "brand": {
      "$ref": "#/components/schemas/BrandObject"
    }
  }
}
object BrandsResponse
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/OffsetPaginationObject"
    },
    {
      "type": "object",
      "properties": {
        "brands": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/BrandObject"
          },
          "description": "Array of brands"
        }
      }
    }
  ],
  "title": "Brands"
}
object BulkUpdateDefaultCustomStatusRequest
{
  "type": "object",
  "properties": {
    "ids": {
      "type": "string",
      "description": "The comma-separated list of custom ticket status ids to be set as default for their status categories"
    }
  }
}
object BulkUpdateDefaultCustomStatusResponse
{
  "type": "object"
}
object ChannelFrameworkPushResultsResponse
{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ChannelFrameworkResultObject"
      },
      "description": "An array of [result objects](https://developer.zendesk.com)"
    }
  }
}
string ChannelFrameworkReportErrorResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object ChannelFrameworkResultObject
{
  "type": "object",
  "properties": {
    "status": {
      "$ref": "#/components/schemas/ChannelFrameworkResultStatusObject"
    },
    "external_resource_id": {
      "type": "string",
      "readOnly": true,
      "description": "The external ID of the resource, as passed in"
    }
  }
}
object ChannelFrameworkResultStatusObject
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "readOnly": true,
      "description": "A code indicating the status of the import of the resource, as described in [status codes](https://developer.zendesk.com)"
    },
    "description": {
      "type": "string",
      "readOnly": true,
      "description": "In the case of an exception, a description of the exception. Otherwise, not present."
    }
  },
  "description": "The status of the import for the indicated resource"
}
string ChannelFrameworkValidateTokenResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object CollaboratorObject
{
  "type": "object",
  "example": {
    "name": "Someone Special",
    "email": "someone@example.com"
  },
  "properties": {
    "name": {
      "type": "string"
    },
    "email": {
      "type": "string",
      "format": "email"
    }
  }
}
object ComplianceDeletionStatusObject
{
  "type": "object",
  "required": [
    "action",
    "application",
    "account_subdomain",
    "executer_id",
    "user_id",
    "created_at"
  ],
  "properties": {
    "action": {
      "type": "string"
    },
    "user_id": {
      "type": "integer"
    },
    "created_at": {
      "type": "string"
    },
    "application": {
      "type": "string"
    },
    "executer_id": {
      "type": "integer",
      "nullable": true
    },
    "account_subdomain": {
      "type": "string"
    }
  }
}
object ComplianceDeletionStatusesResponse
{
  "type": "object",
  "properties": {
    "compliance_deletion_statuses": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ComplianceDeletionStatusObject"
      }
    }
  }
}
object ConditionObject
{
  "type": "object",
  "properties": {
    "field": {
      "type": "string",
      "description": "The name of a ticket field"
    },
    "value": {
      "type": "string",
      "description": "The value of a ticket field"
    },
    "operator": {
      "type": "string",
      "description": "A comparison operator"
    }
  }
}
object ConditionsObject
{
  "type": "object",
  "properties": {
    "all": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ConditionObject"
      },
      "description": "Logical AND. Tickets must fulfill all of the conditions to be considered matching"
    },
    "any": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ConditionObject"
      },
      "description": "Logical OR. Tickets may satisfy any of the conditions to be considered matching"
    }
  },
  "description": "An object that describes the conditions under which the automation will execute. See [Conditions reference](https://developer.zendesk.com)"
}
object CountOrganizationObject
{
  "type": "object",
  "properties": {
    "value": {
      "type": "integer",
      "readOnly": true
    },
    "refreshed_at": {
      "type": "string",
      "readOnly": true
    }
  }
}
object CountOrganizationResponse
{
  "type": "object",
  "properties": {
    "count": {
      "$ref": "#/components/schemas/CountOrganizationObject"
    }
  }
}
object CountResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer"
        },
        "refreshed_at": {
          "type": "string",
          "format": "datetime"
        }
      }
    }
  }
}
object CreateResourceResult
{
  "type": "object",
  "required": [
    "id",
    "index"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "the id of the new resource"
    },
    "index": {
      "type": "integer",
      "description": "the index number of the resul"
    }
  }
}
object CurrentUserResponse
{
  "type": "object",
  "properties": {
    "user": {
      "allOf": [
        {
          "$ref": "#/components/schemas/UserObject"
        },
        {
          "type": "object",
          "properties": {
            "authenticity_token": {
              "type": "string",
              "readOnly": true,
              "description": "CSRF token required by some Zendesk APIs."
            }
          }
        }
      ]
    }
  }
}
object CursorBasedExportIncrementalTicketsResponse
{
  "type": "object",
  "example": {
    "tickets": [
      {
        "id": 35436,
        "url": "https://company.zendesk.com/api/v2/tickets/35436.json",
        "via": {
          "channel": "web"
        },
        "tags": [
          "enterprise",
          "other_tag"
        ],
        "type": "incident",
        "due_at": null,
        "status": "open",
        "subject": "Help, my printer is on fire!",
        "group_id": 98738,
        "priority": "high",
        "recipient": "support@company.com",
        "created_at": "2009-07-20T22:55:29Z",
        "problem_id": 9873764,
        "updated_at": "2011-05-05T10:38:52Z",
        "assignee_id": 235323,
        "description": "The fire is very colorful.",
        "external_id": "ahg35h3jh",
        "raw_subject": "{{dc.printer_on_fire}}",
        "follower_ids": [
          35334,
          234
        ],
        "requester_id": 20978392,
        "submitter_id": 76872,
        "custom_fields": [
          {
            "id": 27642,
            "value": "745"
          },
          {
            "id": 27648,
            "value": "yes"
          }
        ],
        "has_incidents": false,
        "organization_id": 509974,
        "collaborator_ids": [
          35334,
          234
        ],
        "satisfaction_rating": {
          "id": 1234,
          "score": "good",
          "comment": "Great support!"
        },
        "sharing_agreement_ids": [
          84432
        ]
      }
    ],
    "after_url": "https://{subdomain}.zendesk.com/api/v2/incremental/tickets/cursor.json?cursor=MTU3NjYxMzUzOS4wfHw0Njd8",
    "before_url": null,
    "after_cursor": "MTU3NjYxMzUzOS4wfHw0Njd8",
    "before_cursor": null,
    "end_of_stream": true
  },
  "properties": {
    "tickets": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketObject"
      }
    },
    "after_url": {
      "type": "string",
      "nullable": true
    },
    "before_url": {
      "type": "string",
      "nullable": true
    },
    "after_cursor": {
      "type": "string",
      "nullable": true
    },
    "before_cursor": {
      "type": "string",
      "nullable": true
    },
    "end_of_stream": {
      "type": "boolean"
    }
  },
  "description": "See [Tickets](https://developer.zendesk.com) for a detailed example.\n"
}
object CursorBasedExportIncrementalUsersResponse
{
  "type": "object",
  "example": {
    "users": [
      {
        "id": 35436,
        "url": "https://company.zendesk.com/api/v2/users/35436.json",
        "name": "Johnny Agent",
        "role": "agent",
        "tags": [
          "enterprise",
          "other_tag"
        ],
        "alias": "Mr. Johnny",
        "email": "johnny@example.com",
        "notes": "Johnny is a nice guy!",
        "phone": "+15551234567",
        "photo": {
          "id": 928374,
          "name": "my_funny_profile_pic.png",
          "size": 166144,
          "thumbnails": [
            {
              "id": 928375,
              "name": "my_funny_profile_pic_thumb.png",
              "size": 58298,
              "content_url": "https://company.zendesk.com/photos/my_funny_profile_pic_thumb.png",
              "content_type": "image/png"
            }
          ],
          "content_url": "https://company.zendesk.com/photos/my_funny_profile_pic.png",
          "content_type": "image/png"
        },
        "active": true,
        "locale": "en-US",
        "shared": false,
        "details": "",
        "verified": true,
        "locale_id": 1,
        "moderator": true,
        "role_type": 0,
        "signature": "Have a nice day, Johnny",
        "suspended": true,
        "time_zone": "Copenhagen",
        "created_at": "2009-07-20T22:55:29Z",
        "updated_at": "2011-05-05T10:38:52Z",
        "external_id": "sai989sur98w9",
        "user_fields": {
          "user_date": "2012-07-23T00:00:00Z",
          "user_decimal": 5.1,
          "user_dropdown": "option_1"
        },
        "shared_agent": false,
        "last_login_at": "2011-05-05T10:38:52Z",
        "custom_role_id": 9373643,
        "organization_id": 57542,
        "restricted_agent": true,
        "ticket_restriction": "assigned",
        "only_private_comments": false
      }
    ],
    "after_url": "https://example.zendesk.com/api/v2/incremental/users/cursor.json?cursor=MTU3NjYxMzUzOS4wfHw0Njd8",
    "before_url": null,
    "after_cursor": "MTU3NjYxMzUzOS4wfHw0Njd8",
    "before_cursor": null,
    "end_of_stream": true
  },
  "properties": {
    "users": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/UserObject"
      }
    },
    "after_url": {
      "type": "string",
      "nullable": true
    },
    "before_url": {
      "type": "string",
      "nullable": true
    },
    "after_cursor": {
      "type": "string",
      "nullable": true
    },
    "before_cursor": {
      "type": "string",
      "nullable": true
    },
    "end_of_stream": {
      "type": "boolean"
    }
  }
}
object CustomFieldObject
{
  "type": "object",
  "required": [
    "key",
    "type",
    "title"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned upon creation"
    },
    "key": {
      "type": "string",
      "description": "A unique key that identifies this custom field. This is used for updating the field and referencing in placeholders. The key must consist of only letters, numbers, and underscores. It can't be only numbers and can't be reused if deleted."
    },
    "tag": {
      "type": "string",
      "description": "Optional for custom field of type \"checkbox\"; not presented otherwise."
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The URL for this resource"
    },
    "type": {
      "type": "string",
      "description": "The custom field type: \"checkbox\", \"date\", \"decimal\", \"dropdown\", \"integer\", [\"lookup\"](https://developer.zendesk.com), \"regexp\", \"text\", or \"textarea\""
    },
    "title": {
      "type": "string",
      "description": "The title of the custom field"
    },
    "active": {
      "type": "boolean",
      "description": "If true, this field is available for use"
    },
    "system": {
      "type": "boolean",
      "readOnly": true,
      "description": "If true, only active and position values of this field can be changed"
    },
    "position": {
      "type": "integer",
      "description": "Ordering of the field relative to other fields"
    },
    "raw_title": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the `title` value, if not. See [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the last update of the ticket field"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the last update of the ticket field"
    },
    "description": {
      "type": "string",
      "description": "User-defined description of this field's purpose"
    },
    "raw_description": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the `description` value, if not. See [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "relationship_filter": {
      "type": "object",
      "description": "A filter definition that allows your autocomplete to filter down results"
    },
    "custom_field_options": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomFieldOptionObject"
      },
      "description": "Required and presented for a custom field of type \"dropdown\". Each option is represented by an object with a `name` and `value` property"
    },
    "regexp_for_validation": {
      "type": "string",
      "nullable": true,
      "description": "Regular expression field only. The validation pattern for a field value to be deemed valid"
    },
    "relationship_target_type": {
      "type": "string",
      "description": "A representation of what type of object the field references. Options are \"zen:user\", \"zen:organization\", \"zen:ticket\", and \"zen:custom_object:{key}\" where key is a custom object key. For example \"zen:custom_object:apartment\"."
    }
  }
}
object CustomFieldOptionObject
{
  "type": "object",
  "required": [
    "name",
    "value"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned upon creation"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "URL of the dropdown option"
    },
    "name": {
      "type": "string",
      "description": "Name of the dropdown option"
    },
    "value": {
      "type": "string",
      "description": "Value of the dropdown option"
    },
    "position": {
      "type": "integer",
      "description": "Position of the dropdown option"
    },
    "raw_name": {
      "type": "string",
      "readOnly": true,
      "description": "Raw name of the dropdown option"
    }
  }
}
object CustomFieldOptionResponse
{
  "type": "object",
  "properties": {
    "custom_field_option": {
      "$ref": "#/components/schemas/CustomFieldOptionObject"
    }
  }
}
object CustomFieldOptionsResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true,
      "description": "Total count of records retrieved"
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "URL of the next page"
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "URL of the previous page"
    },
    "custom_field_options": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomFieldOptionObject"
      }
    }
  }
}
object CustomObject
{
  "type": "object",
  "required": [
    "key",
    "title",
    "title_pluralized"
  ],
  "properties": {
    "key": {
      "type": "string",
      "readOnly": true,
      "description": "A user-defined unique identifier. Writable on create only. Cannot be reused if deleted."
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "Direct link to the specific custom object"
    },
    "title": {
      "type": "string",
      "description": "User-defined display name for the object"
    },
    "raw_title": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the \"title\" value, if not. See [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the object type was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the last update of the object"
    },
    "description": {
      "type": "string",
      "description": "User-defined description of the object"
    },
    "raw_description": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the \"raw_description\" value, if not. See [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "title_pluralized": {
      "type": "string",
      "description": "User-defined pluralized version of the object's title"
    },
    "created_by_user_id": {
      "type": "string",
      "readOnly": true,
      "description": "Id of a user who created the object"
    },
    "updated_by_user_id": {
      "type": "string",
      "readOnly": true,
      "description": "Id of the last user who updated the object"
    },
    "raw_title_pluralized": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the \"raw_title_pluralized\" value, if not. See [Dynamic Content Items](https://developer.zendesk.com)"
    }
  }
}
object CustomObjectCreateInput
{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "description": "Unique identifier. Writable on create only"
    },
    "title": {
      "type": "string",
      "description": "Display name for the object"
    },
    "title_pluralized": {
      "type": "string",
      "description": "Pluralized version of the object's title"
    }
  }
}
object CustomObjectFieldResponse
{
  "type": "object",
  "properties": {
    "custom_object_field": {
      "$ref": "#/components/schemas/CustomFieldObject"
    }
  }
}
object CustomObjectFieldsCreateRequest
{
  "type": "object",
  "properties": {
    "custom_object_field": {
      "$ref": "#/components/schemas/CustomFieldObject"
    }
  }
}
string CustomObjectFieldsReorderFieldsResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object CustomObjectFieldsResponse
{
  "type": "object",
  "properties": {
    "custom_object_fields": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomFieldObject"
      }
    }
  }
}
object CustomObjectLimitsResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true,
      "description": "The current numnber of the requested resource"
    },
    "limit": {
      "type": "integer",
      "readOnly": true,
      "description": "The maximum allowed number for the requested resource"
    }
  }
}
object CustomObjectRecord
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "id": {
      "type": "string",
      "readOnly": true,
      "description": "Automatically assigned upon creation"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "Direct link to the specific custom object"
    },
    "name": {
      "type": "string",
      "readOnly": true,
      "description": "User-defined display name for the object"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the object was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the last update of the object"
    },
    "external_id": {
      "type": "string",
      "nullable": true,
      "description": "An id you can use to link custom object records to external data"
    },
    "custom_object_key": {
      "type": "string",
      "readOnly": true,
      "description": "A user-defined unique identifier"
    },
    "created_by_user_id": {
      "type": "string",
      "readOnly": true,
      "description": "Id of a user who created the object"
    },
    "updated_by_user_id": {
      "type": "string",
      "readOnly": true,
      "description": "Id of the last user who updated the object"
    },
    "custom_object_fields": {
      "type": "object",
      "additionalProperties": true
    }
  }
}
object CustomObjectRecordResponse
{
  "type": "object",
  "properties": {
    "custom_object_record": {
      "$ref": "#/components/schemas/CustomObjectRecord"
    }
  }
}
object CustomObjectRecordsBulkCreateRequest
{
  "type": "object",
  "properties": {
    "job": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/CustomObjectRecord"
          },
          "description": "An array of record objects for job actions that create, update, or set. An array of strings for job actions that delete."
        },
        "action": {
          "type": "string"
        }
      }
    }
  }
}
object CustomObjectRecordsCreateRequest
{
  "type": "object",
  "properties": {
    "custom_object_record": {
      "$ref": "#/components/schemas/CustomObjectRecord"
    }
  }
}
object CustomObjectRecordsGetCountResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "object",
      "additionalProperties": {
        "properties": {
          "value": {
            "type": "integer",
            "readOnly": true,
            "description": "Number of records at the time of the latest count operation"
          },
          "refreshed_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "The time the last count was performed"
          }
        }
      }
    }
  }
}
object CustomObjectRecordsJobsResponse
{
  "type": "object",
  "properties": {
    "job_status": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "total": {
          "type": "integer"
        },
        "status": {
          "type": "string"
        },
        "message": {
          "type": "string",
          "nullable": true
        },
        "results": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/CustomObjectRecord"
          },
          "nullable": true
        },
        "progress": {
          "type": "integer",
          "nullable": true
        }
      }
    }
  }
}
object CustomObjectRecordsResponse
{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object",
      "required": [
        "has_more",
        "after_cursor",
        "before_cursor"
      ],
      "properties": {
        "has_more": {
          "type": "boolean"
        },
        "after_cursor": {
          "type": "string",
          "nullable": true
        },
        "before_cursor": {
          "type": "string",
          "nullable": true
        }
      }
    },
    "count": {
      "type": "integer",
      "readOnly": true,
      "description": "The number of results returned for the current request"
    },
    "links": {
      "type": "object",
      "required": [
        "prev",
        "next"
      ],
      "properties": {
        "next": {
          "type": "string",
          "nullable": true
        },
        "prev": {
          "type": "string",
          "nullable": true
        }
      }
    },
    "custom_object_records": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomObjectRecord"
      }
    }
  }
}
object CustomObjectRecordsUpsertRequest
{
  "type": "object",
  "properties": {
    "custom_object_record": {
      "$ref": "#/components/schemas/CustomObjectRecord"
    }
  }
}
object CustomObjectResponse
{
  "type": "object",
  "properties": {
    "custom_object": {
      "$ref": "#/components/schemas/CustomObject"
    }
  }
}
object CustomObjectsCreateRequest
{
  "type": "object",
  "properties": {
    "custom_object": {
      "$ref": "#/components/schemas/CustomObjectCreateInput"
    }
  }
}
object CustomObjectsResponse
{
  "type": "object",
  "properties": {
    "custom_objects": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomObject"
      }
    }
  }
}
object CustomRoleConfigurationObject
{
  "type": "object",
  "properties": {
    "chat_access": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether or not the agent has access to Chat"
    },
    "light_agent": {
      "type": "boolean",
      "readOnly": true
    },
    "view_access": {
      "type": "string",
      "description": "What the agent can do with views. Allowed values: \"full\", \"manage-group\", \"manage-personal\", \"playonly\", \"readonly\""
    },
    "forum_access": {
      "type": "string",
      "description": "The kind of access the agent has to Guide. Allowed values: \"edit-topics\", \"full\", \"readonly\""
    },
    "group_access": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether or not the agent can add or modify groups"
    },
    "macro_access": {
      "type": "string",
      "description": "What the agent can do with macros. Allowed values: \"full\", \"manage-group\", \"manage-personal\", \"readonly\""
    },
    "ticket_merge": {
      "type": "boolean",
      "description": "Whether or not the agent can merge tickets"
    },
    "voice_access": {
      "type": "boolean",
      "description": "Whether or not the agent can answer and place calls to end users"
    },
    "report_access": {
      "type": "string",
      "description": "What the agent can do with reports. Allowed values: \"full\", \"none\", \"readonly\""
    },
    "ticket_access": {
      "type": "string",
      "description": "What kind of tickets the agent can access. Allowed values: \"all\", \"assigned-only\", \"within-groups\", \"within-groups-and-public-groups\", \"within-organization\""
    },
    "explore_access": {
      "type": "string",
      "description": "Allowed values: \"edit\", \"full\", \"none\", \"readonly\""
    },
    "ticket_editing": {
      "type": "boolean",
      "description": "Whether or not the agent can edit ticket properties"
    },
    "manage_facebook": {
      "type": "boolean",
      "description": "Whether or not the agent can manage Facebook pages"
    },
    "moderate_forums": {
      "type": "boolean",
      "readOnly": true
    },
    "ticket_deletion": {
      "type": "boolean",
      "description": "Whether or not the agent can delete tickets"
    },
    "user_view_access": {
      "type": "string",
      "description": "What the agent can do with customer lists. Allowed values: \"full\", \"manage-group\", \"manage-personal\", \"none\", \"readonly\""
    },
    "manage_user_fields": {
      "type": "boolean",
      "description": "Whether or not the agent can create and manage user fields"
    },
    "ticket_tag_editing": {
      "type": "boolean",
      "description": "Whether or not the agent can edit ticket tags"
    },
    "manage_ticket_forms": {
      "type": "boolean",
      "description": "Whether or not the agent can create and manage ticket forms"
    },
    "end_user_list_access": {
      "type": "string",
      "description": "Whether or not the agent can view lists of user profiles. Allowed values: \"full\", \"none\""
    },
    "manage_ticket_fields": {
      "type": "boolean",
      "description": "Whether or not the agent can create and manage ticket fields"
    },
    "organization_editing": {
      "type": "boolean",
      "description": "Whether or not the agent can add or modify organizations"
    },
    "view_deleted_tickets": {
      "type": "boolean",
      "description": "Whether or not the agent can view deleted tickets"
    },
    "manage_business_rules": {
      "type": "boolean",
      "description": "Whether or not the agent can manage business rules"
    },
    "ticket_comment_access": {
      "type": "string",
      "description": "What type of comments the agent can make. Allowed values: \"public\", \"none\""
    },
    "twitter_search_access": {
      "type": "boolean"
    },
    "manage_dynamic_content": {
      "type": "boolean",
      "description": "Whether or not the agent can access dynamic content"
    },
    "voice_dashboard_access": {
      "type": "boolean",
      "description": "Whether or not the agent can view details about calls on the Talk dashboard"
    },
    "end_user_profile_access": {
      "type": "string",
      "description": "What the agent can do with end-user profiles. Allowed values: \"edit\", \"edit-within-org\", \"full\", \"readonly\""
    },
    "side_conversation_create": {
      "type": "boolean",
      "description": "Whether or not the agent can contribute to side conversations"
    },
    "manage_organization_fields": {
      "type": "boolean",
      "description": "Whether or not the agent can create and manage organization fields"
    },
    "organization_notes_editing": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether or not the agent can add or modify organization notes"
    },
    "assign_tickets_to_any_group": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether or not the agent can assign tickets to any group"
    },
    "manage_contextual_workspaces": {
      "type": "boolean",
      "description": "Whether or not the agent can view, add, and edit contextual workspaces"
    },
    "manage_extensions_and_channels": {
      "type": "boolean",
      "description": "Whether or not the agent can manage channels and extensions"
    },
    "forum_access_restricted_content": {
      "type": "boolean"
    }
  },
  "description": "Configuration settings for the role. See [Configuration](https://developer.zendesk.com)"
}
object CustomRoleObject
{
  "type": "object",
  "title": "Custom Agent Roles",
  "required": [
    "name",
    "role_type"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned on creation"
    },
    "name": {
      "type": "string",
      "description": "Name of the custom role"
    },
    "role_type": {
      "type": "integer",
      "readOnly": true,
      "description": "The user's role. 0 stands for a custom agent, 1 for a light agent, 2 for a chat agent, 3 for a contributor, 4 for an admin and 5 for a billing admin. See [Understanding standard agent roles in Zendesk Support](https://support.zendesk.com/hc/en-us/articles/4409155971354-Understanding-standard-agent-roles-in-Zendesk-Support) in Zendesk help"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the record was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the record was last updated"
    },
    "description": {
      "type": "string",
      "description": "A description of the role"
    },
    "configuration": {
      "$ref": "#/components/schemas/CustomRoleConfigurationObject"
    },
    "team_member_count": {
      "type": "integer",
      "readOnly": true,
      "description": "The number of team members assigned to this role"
    }
  }
}
object CustomRoleResponse
{
  "type": "object",
  "properties": {
    "custom_role": {
      "$ref": "#/components/schemas/CustomRoleObject"
    }
  }
}
object CustomRolesResponse
{
  "type": "object",
  "properties": {
    "custom_roles": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomRoleObject"
      }
    }
  }
}
object CustomStatusCreateInput
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/CustomStatusUpdateInput"
    },
    {
      "type": "object",
      "properties": {
        "status_category": {
          "enum": [
            "new",
            "open",
            "pending",
            "hold",
            "solved"
          ],
          "type": "string",
          "description": "The status category the custom ticket status belongs to"
        }
      }
    }
  ]
}
object CustomStatusCreateRequest
{
  "type": "object",
  "properties": {
    "custom_status": {
      "$ref": "#/components/schemas/CustomStatusCreateInput"
    }
  }
}
object CustomStatusObject
{
  "type": "object",
  "required": [
    "status_category",
    "agent_label"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when the custom ticket status is created"
    },
    "active": {
      "type": "boolean",
      "description": "If true, the custom status is set to active, If false, the custom status is set to inactive"
    },
    "default": {
      "type": "boolean",
      "description": "If true, the custom status is set to default. If false, the custom status is set to non-default"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The date and time the custom ticket status was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The date and time the custom ticket status was last updated"
    },
    "agent_label": {
      "type": "string",
      "description": "The label displayed to agents. Maximum length is 48 characters"
    },
    "description": {
      "type": "string",
      "description": "The description of when the user should select this custom ticket status"
    },
    "end_user_label": {
      "type": "string",
      "description": "The label displayed to end users. Maximum length is 48 characters"
    },
    "raw_agent_label": {
      "type": "string",
      "readOnly": true,
      "description": "The dynamic content placeholder. If the dynamic content placeholder is not available, this is the \"agent_label\" value. See [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "raw_description": {
      "type": "string",
      "readOnly": true,
      "description": "The dynamic content placeholder. If the dynamic content placeholder is not available, this is the \"description\" value. [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "status_category": {
      "enum": [
        "new",
        "open",
        "pending",
        "hold",
        "solved"
      ],
      "type": "string",
      "description": "The status category the custom ticket status belongs to"
    },
    "raw_end_user_label": {
      "type": "string",
      "readOnly": true,
      "description": "The dynamic content placeholder. If the dynamic content placeholder is not available, this is the \"end_user_label\" value. See [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "end_user_description": {
      "type": "string",
      "description": "The description displayed to end users"
    },
    "raw_end_user_description": {
      "type": "string",
      "readOnly": true,
      "description": "The dynamic content placeholder. If the dynamic content placeholder is not available, this is the \"end_user_description\" value. See [Dynamic Content Items](https://developer.zendesk.com)"
    }
  }
}
object CustomStatusResponse
{
  "type": "object",
  "properties": {
    "custom_status": {
      "$ref": "#/components/schemas/CustomStatusObject"
    }
  }
}
object CustomStatusUpdateInput
{
  "type": "object",
  "properties": {
    "active": {
      "type": "boolean",
      "description": "True if the custom status is set as active; inactive if false"
    },
    "agent_label": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the \"agent_label\" value, if not. See [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "description": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the \"description\" value, if not. See [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "end_user_label": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the \"end_user_label\" value, if not. See [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "end_user_description": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the \"end_user_description\" value, if not. See [Dynamic Content Items](https://developer.zendesk.com)"
    }
  }
}
object CustomStatusUpdateRequest
{
  "type": "object",
  "properties": {
    "custom_status": {
      "$ref": "#/components/schemas/CustomStatusUpdateInput"
    }
  }
}
object CustomStatusesResponse
{
  "type": "object",
  "properties": {
    "custom_statuses": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomStatusObject"
      }
    }
  }
}
object CustomTicketStatusesBulkUpdateDefaultResponse
{
  "type": "object",
  "example": {},
  "properties": {}
}
object DefinitionsResponse
{
  "type": "object",
  "properties": {
    "definitions": {
      "type": "object",
      "properties": {
        "conditions_all": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "group": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "values": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    },
                    "enabled": {
                      "type": "boolean"
                    }
                  }
                }
              },
              "subject": {
                "type": "string"
              },
              "nullable": {
                "type": "boolean"
              },
              "operators": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    },
                    "terminal": {
                      "type": "boolean"
                    }
                  }
                }
              },
              "repeatable": {
                "type": "boolean"
              }
            }
          }
        },
        "conditions_any": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "group": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "values": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    },
                    "enabled": {
                      "type": "boolean"
                    }
                  }
                }
              },
              "subject": {
                "type": "string"
              },
              "nullable": {
                "type": "boolean"
              },
              "operators": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    },
                    "terminal": {
                      "type": "boolean"
                    }
                  }
                }
              },
              "repeatable": {
                "type": "boolean"
              }
            }
          }
        }
      }
    }
  }
}
object DeletedUserObject
{
  "type": "object",
  "required": [
    "id",
    "url",
    "name",
    "email",
    "created_at",
    "updated_at",
    "time_zone",
    "phone",
    "shared_phone_number",
    "photo",
    "locale_id",
    "locale",
    "organization_id",
    "role",
    "active"
  ],
  "properties": {
    "id": {
      "type": "integer"
    },
    "url": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "role": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "phone": {
      "type": "string",
      "nullable": true
    },
    "photo": {
      "type": "object",
      "nullable": true
    },
    "active": {
      "type": "boolean"
    },
    "locale": {
      "type": "string"
    },
    "locale_id": {
      "type": "integer"
    },
    "time_zone": {
      "type": "string"
    },
    "created_at": {
      "type": "string"
    },
    "updated_at": {
      "type": "string"
    },
    "organization_id": {
      "type": "integer"
    },
    "shared_phone_number": {
      "type": "string",
      "nullable": true
    }
  }
}
object DeletedUserResponse
{
  "type": "object",
  "properties": {
    "deleted_user": {
      "$ref": "#/components/schemas/DeletedUserObject"
    }
  }
}
object DeletedUsersResponse
{
  "type": "object",
  "properties": {
    "deleted_users": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/DeletedUserObject"
      }
    }
  }
}
object DynamicContentObject
{
  "type": "object",
  "title": "Dynamic Content Items",
  "required": [
    "name",
    "default_locale_id",
    "variants"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when creating items"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of this item"
    },
    "name": {
      "type": "string",
      "description": "The unique name of the item"
    },
    "outdated": {
      "type": "boolean",
      "readOnly": true,
      "description": "Indicates the item has outdated variants within it"
    },
    "variants": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/DynamicContentVariantObject"
      },
      "description": "All variants within this item. See [Dynamic Content Item Variants](https://developer.zendesk.com)"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When this record was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When this record was last updated"
    },
    "placeholder": {
      "type": "string",
      "readOnly": true,
      "description": "Automatically generated placeholder for the item, derived from name"
    },
    "default_locale_id": {
      "type": "integer",
      "description": "The default locale for the item. Must be one of the [locales the account has active](/api-reference/ticketing/account-configuration/locales/#list-locales)."
    }
  }
}
object DynamicContentResponse
{
  "type": "object",
  "properties": {
    "item": {
      "$ref": "#/components/schemas/DynamicContentObject"
    }
  }
}
object DynamicContentVariantObject
{
  "type": "object",
  "example": {
    "id": 23,
    "url": "https://subdomain.zendesk.com/api/v2/dynamic_content/items/3/variants/23.json",
    "active": true,
    "content": "This is my dynamic content in English",
    "default": true,
    "outdated": false,
    "locale_id": 125,
    "created_at": "2014-04-09T19:53:23Z",
    "updated_at": "2014-04-09T19:53:23Z"
  },
  "required": [
    "content",
    "locale_id"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when the variant is created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of the variant"
    },
    "active": {
      "type": "boolean",
      "description": "If the variant is active and useable"
    },
    "content": {
      "type": "string",
      "description": "The content of the variant"
    },
    "default": {
      "type": "boolean",
      "description": "If the variant is the default for the item it belongs to"
    },
    "outdated": {
      "type": "boolean",
      "readOnly": true,
      "description": "If the variant is outdated"
    },
    "locale_id": {
      "type": "integer",
      "description": "An active locale"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the variant was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the variant was last updated"
    }
  }
}
object DynamicContentVariantResponse
{
  "type": "object",
  "properties": {
    "variant": {
      "$ref": "#/components/schemas/DynamicContentVariantObject"
    }
  }
}
object DynamicContentVariantsResponse
{
  "type": "object",
  "properties": {
    "variants": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/DynamicContentVariantObject"
      }
    }
  }
}
object DynamicContentsResponse
{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/DynamicContentObject"
      }
    }
  }
}
object EmailCCObject
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/FollowerObject"
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "enum": [
            "put",
            "delete"
          ],
          "type": "string"
        },
        "user_id": {
          "type": "string"
        },
        "user_name": {
          "type": "string"
        },
        "user_email": {
          "type": "string"
        }
      }
    }
  ]
}
object Error
{
  "type": "object",
  "required": [
    "code",
    "title"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "code": {
      "type": "string"
    },
    "links": {
      "type": "object"
    },
    "title": {
      "type": "string"
    },
    "detail": {
      "type": "string"
    },
    "source": {
      "type": "object"
    },
    "status": {
      "type": "string"
    }
  }
}
object Errors
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Error"
      }
    }
  }
}
object EssentialsCardObject
{
  "type": "object",
  "example": {
    "id": "123",
    "key": "zen:custom_object:boat",
    "fields": [
      {
        "id": null,
        "zrn": "zen:user:identity:email"
      },
      {
        "id": null,
        "zrn": "zen:user:field:standard:external_id"
      },
      {
        "id": null,
        "zrn": "zen:user:field:standard:iana_time_zone"
      },
      {
        "id": null,
        "zrn": "zen:user:field:standard:locale"
      },
      {
        "id": null,
        "zrn": "zen:user:field:standard:organization_id"
      }
    ],
    "layout": "essentials_card",
    "default": true,
    "max_count": 20,
    "created_at": "2012-04-02T22:55:29Z",
    "updated_at": "2012-04-02T22:55:29Z"
  },
  "required": [
    "fields"
  ],
  "properties": {
    "id": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "id of the essentials card\n"
    },
    "key": {
      "type": "string",
      "readOnly": true,
      "description": "Object type. Example: `zen:user` refers to `User` type\n"
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "description": "Fields that are displayed in the essentials card details. The order is defined by the order of the fields in the array"
    },
    "layout": {
      "type": "string",
      "readOnly": true,
      "description": "layout type\n"
    },
    "default": {
      "type": "boolean",
      "readOnly": true,
      "description": "If true, the system has used the first twenty fields for the custom object type as the essentials card."
    },
    "max_count": {
      "type": "integer",
      "readOnly": true,
      "description": "Maximum number of fields allowed in the essentials card"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Date and time the essentials card were created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Date and time the essentials card were last updated"
    }
  }
}
object EssentialsCardResponse
{
  "type": "object",
  "properties": {
    "object_layout": {
      "$ref": "#/components/schemas/EssentialsCardObject"
    }
  }
}
object EssentialsCardsResponse
{
  "type": "object",
  "properties": {
    "object_layouts": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EssentialsCardObject"
      }
    }
  }
}
object ExportIncrementalOrganizationsResponse
{
  "type": "object",
  "example": {
    "count": 1,
    "end_time": 1601357503,
    "next_page": "https://example.zendesk.com/api/v2/incremental/ticket_events.json?start_time=1601357503",
    "end_of_stream": true,
    "organizations": [
      {
        "id": 4112492,
        "url": "https://example.zendesk.com/api/v2/organizations/4112492.json",
        "name": "Groablet Enterprises",
        "tags": [
          "smiley",
          "teapot_kettle"
        ],
        "notes": "donkey",
        "details": "caterpillar =)",
        "group_id": 1835962,
        "created_at": "2018-11-14T00:14:52Z",
        "updated_at": "2018-11-14T00:54:22Z",
        "external_id": "ABC198",
        "domain_names": [
          "remain.com"
        ],
        "shared_tickets": false,
        "shared_comments": false,
        "organization_fields": {
          "datepudding": "2018-11-04T00:00:00+00:00",
          "org_field_1": "happy happy",
          "org_field_2": "teapot_kettle"
        }
      }
    ]
  },
  "properties": {
    "count": {
      "type": "integer"
    },
    "end_time": {
      "type": "integer"
    },
    "next_page": {
      "type": "string",
      "nullable": true
    },
    "end_of_stream": {
      "type": "boolean"
    },
    "organizations": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/OrganizationObject"
      }
    }
  }
}
object ExportIncrementalTicketEventsResponse
{
  "type": "object",
  "example": {
    "count": 1,
    "end_time": 1601357503,
    "next_page": "https://example.zendesk.com/api/v2/incremental/ticket_events.json?start_time=1601357503",
    "end_of_stream": true,
    "ticket_events": [
      {
        "id": 926256957613,
        "time": "2020-10-26T12:53:12Z",
        "type": "measure",
        "metric": "agent_work_time",
        "ticket_id": 155,
        "instance_id": 1
      }
    ]
  },
  "properties": {
    "count": {
      "type": "integer"
    },
    "end_time": {
      "type": "integer"
    },
    "next_page": {
      "type": "string",
      "nullable": true
    },
    "end_of_stream": {
      "type": "boolean"
    },
    "ticket_events": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketMetricEventBaseObject"
      }
    }
  }
}
object FollowerObject
{
  "type": "object",
  "properties": {
    "action": {
      "enum": [
        "put",
        "delete"
      ],
      "type": "string"
    },
    "user_id": {
      "type": "string"
    },
    "user_email": {
      "type": "string",
      "format": "email"
    }
  }
}
object GroupMembershipObject
{
  "type": "object",
  "required": [
    "user_id",
    "group_id"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned upon creation"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of this record"
    },
    "default": {
      "type": "boolean",
      "description": "If true, tickets assigned directly to the agent will assume this membership's group"
    },
    "user_id": {
      "type": "integer",
      "description": "The id of an agent"
    },
    "group_id": {
      "type": "integer",
      "description": "The id of a group"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the group was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the last update of the group"
    }
  }
}
object GroupMembershipResponse
{
  "type": "object",
  "properties": {
    "group_membership": {
      "$ref": "#/components/schemas/GroupMembershipObject"
    }
  }
}
object GroupMembershipsResponse
{
  "type": "object",
  "properties": {
    "group_memberships": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/GroupMembershipObject"
      }
    }
  }
}
object GroupObject
{
  "type": "object",
  "example": {
    "id": 3432,
    "url": "https://company.zendesk.com/api/v2/groups/3432.json",
    "name": "First Level Support",
    "default": true,
    "deleted": false,
    "is_public": true,
    "created_at": "2009-07-20T22:55:29Z",
    "updated_at": "2011-05-05T10:38:52Z",
    "description": "Some clever description here"
  },
  "required": [
    "name"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when creating groups"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of the group"
    },
    "name": {
      "type": "string",
      "description": "The name of the group"
    },
    "default": {
      "type": "boolean",
      "readOnly": true,
      "description": "If the group is the default one for the account"
    },
    "deleted": {
      "type": "boolean",
      "readOnly": true,
      "description": "Deleted groups get marked as such"
    },
    "is_public": {
      "type": "boolean",
      "description": "If true, the group is public.\nIf false, the group is private.\nYou can't change a private group to a public group\n"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the group was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the last update of the group"
    },
    "description": {
      "type": "string",
      "description": "The description of the group"
    }
  }
}
object GroupResponse
{
  "type": "object",
  "properties": {
    "group": {
      "$ref": "#/components/schemas/GroupObject"
    }
  }
}
object GroupSLAPoliciesResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "group_sla_policies": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/GroupSLAPolicyObject"
      }
    }
  }
}
object GroupSLAPolicyFilterConditionObject
{
  "type": "object",
  "properties": {
    "field": {
      "type": "string",
      "description": "The name of a ticket field"
    },
    "value": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "integer"
          }
        ]
      },
      "description": "The value of a ticket field"
    },
    "operator": {
      "type": "string",
      "description": "A comparison operator"
    }
  }
}
object GroupSLAPolicyFilterDefinitionResponse
{
  "type": "object",
  "properties": {
    "definitions": {
      "type": "object",
      "properties": {
        "all": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "group": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "value": {
                "type": "string"
              },
              "values": {
                "type": "object",
                "properties": {
                  "list": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string"
                        },
                        "value": {
                          "type": "integer",
                          "nullable": true
                        }
                      }
                    }
                  },
                  "type": {
                    "type": "string"
                  }
                }
              },
              "operators": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
object GroupSLAPolicyFilterObject
{
  "type": "object",
  "properties": {
    "all": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/GroupSLAPolicyFilterConditionObject"
      }
    }
  },
  "description": "An object that describes the conditions a ticket must match for a Group SLA policy to be applied to the ticket. See [Filter](https://developer.zendesk.com)."
}
object GroupSLAPolicyMetricObject
{
  "type": "object",
  "properties": {
    "metric": {
      "type": "string",
      "description": "The definition of the time that is being measured"
    },
    "target": {
      "type": "integer",
      "description": "The time within which the end-state for a metric should be met"
    },
    "priority": {
      "type": "string",
      "description": "Priority that a ticket must match"
    },
    "business_hours": {
      "type": "boolean",
      "description": "Whether the metric targets are being measured in business hours or calendar hours"
    }
  }
}
object GroupSLAPolicyObject
{
  "type": "object",
  "example": {
    "id": "01H078CBDY28BZG7P6BONY09DN",
    "url": "https://company.zendesk.com/api/v2/group_slas/policies/01H078CBDY28BZG7P6BONY09DN.json",
    "title": "Tier 1",
    "filter": {
      "all": []
    },
    "position": 3,
    "created_at": "2023-03-17T22:50:26Z",
    "updated_at": "2023-03-17T22:50:26Z",
    "description": "Group: Tier 1",
    "policy_metrics": [
      {
        "metric": "group_ownership_time",
        "target": 3600,
        "priority": "low",
        "business_hours": false
      }
    ]
  },
  "required": [
    "title",
    "filter"
  ],
  "properties": {
    "id": {
      "type": "string",
      "readOnly": true,
      "description": "Automatically assigned when created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "URL of the Group SLA policy record"
    },
    "title": {
      "type": "string",
      "description": "The title of the Group SLA policy"
    },
    "filter": {
      "$ref": "#/components/schemas/GroupSLAPolicyFilterObject"
    },
    "position": {
      "type": "integer",
      "description": "Position of the Group SLA policy. This position determines the order in which policies are matched to tickets. If not specified, the Group SLA policy is added at the last position"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the Group SLA policy was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the last update of the Group SLA policy"
    },
    "description": {
      "type": "string",
      "description": "The description of the Group SLA policy"
    },
    "policy_metrics": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/GroupSLAPolicyMetricObject"
      },
      "description": "Array of [policy metric](https://developer.zendesk.com) objects"
    }
  }
}
object GroupSLAPolicyResponse
{
  "type": "object",
  "properties": {
    "group_sla_policy": {
      "$ref": "#/components/schemas/GroupSLAPolicyObject"
    }
  }
}
string GroupSlaPoliciesReorderResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object GroupsCountObject
{
  "type": "object",
  "properties": {
    "count": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer",
          "readOnly": true,
          "description": "Approximate count of groups"
        },
        "refreshed_at": {
          "type": "string",
          "format": "date-time",
          "readOnly": true,
          "description": "Timestamp that indicates when the count was last updated"
        }
      }
    }
  }
}
object GroupsResponse
{
  "type": "object",
  "properties": {
    "groups": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/GroupObject"
      }
    }
  }
}
object HostMappingObject
{
  "type": "object",
  "title": "Host Mapping",
  "example": {
    "cname": "google.com",
    "reason": "wrong_cname",
    "is_valid": false,
    "expected_cnames": [
      "bar.zendesk.coom"
    ]
  },
  "properties": {
    "cname": {
      "type": "string",
      "description": "The canonical name record for a host mapping"
    },
    "reason": {
      "type": "string",
      "description": "Reason why a host mapping is valid or not"
    },
    "is_valid": {
      "type": "boolean",
      "description": "Whether a host mapping is valid or not for a given brand"
    },
    "expected_cnames": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Array of expected CNAME records for host mapping(s) of a given brand"
    }
  }
}
object IncrementalSkillBasedRouting
{
  "type": "object",
  "title": "Incremental Skill-based Routing",
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true,
      "description": "The number of results returned for the current request"
    },
    "end_time": {
      "type": "integer",
      "readOnly": true,
      "description": "The most recent resource creation time present in this result set in Unix epoch time"
    },
    "next_page": {
      "type": "string",
      "readOnly": true,
      "description": "The URL that should be called to get the next set of results"
    },
    "attributes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/IncrementalSkillBasedRoutingAttribute"
      },
      "description": "Routing attributes"
    },
    "instance_values": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/IncrementalSkillBasedRoutingInstanceValue"
      },
      "description": "Routing instance values"
    },
    "attribute_values": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/IncrementalSkillBasedRoutingAttributeValue"
      },
      "description": "Routing attribute values"
    }
  }
}
object IncrementalSkillBasedRoutingAttribute
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "readOnly": true,
      "description": "Automatically assigned when an attribute is created"
    },
    "name": {
      "type": "string",
      "readOnly": true,
      "description": "The name of the attribute"
    },
    "time": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the attribute was created, updated, or deleted"
    },
    "type": {
      "type": "string",
      "readOnly": true,
      "description": "One of \"create\", \"update\", or \"delete\""
    }
  }
}
object IncrementalSkillBasedRoutingAttributeValue
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "readOnly": true,
      "description": "Automatically assigned when an attribute value is created"
    },
    "name": {
      "type": "string",
      "readOnly": true,
      "description": "The name of the attribute value"
    },
    "time": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the attribute value was created, updated, or deleted"
    },
    "type": {
      "type": "string",
      "readOnly": true,
      "description": "One of \"create\", \"update\", or \"delete\""
    },
    "attribute_id": {
      "type": "string",
      "readOnly": true,
      "description": "Id of the associated attribute"
    }
  }
}
object IncrementalSkillBasedRoutingInstanceValue
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "readOnly": true,
      "description": "Automatically assigned when an instance value is created"
    },
    "time": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the instance value was created or deleted"
    },
    "type": {
      "type": "string",
      "readOnly": true,
      "description": "One of \"associate_agent\", \"unassociate_agent\", \"associate_ticket\", or \"unassociate_ticket\""
    },
    "instance_id": {
      "type": "string",
      "readOnly": true,
      "description": "Id of the associated agent or ticket"
    },
    "attribute_value_id": {
      "type": "string",
      "readOnly": true,
      "description": "Id of the associated attribute value"
    }
  }
}
object JobStatusObject
{
  "type": "object",
  "example": {
    "id": "82de0b044094f0c67893ac9fe64f1a99",
    "url": "https://example.zendesk.com/api/v2/job_statuses/82de0b0467893ac9fe64f1a99.json",
    "total": 2,
    "status": "completed",
    "message": "Completed at 2018-03-08 10:07:04 +0000",
    "results": [
      {
        "id": 244,
        "action": "update",
        "status": "Updated",
        "success": true
      },
      {
        "id": 245,
        "action": "update",
        "status": "Updated",
        "success": true
      }
    ],
    "progress": 2
  },
  "properties": {
    "id": {
      "type": "string",
      "readOnly": true,
      "description": "Automatically assigned when the job is queued"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The URL to poll for status updates"
    },
    "total": {
      "type": "integer",
      "nullable": true,
      "readOnly": true,
      "description": "The total number of tasks this job is batching through"
    },
    "status": {
      "type": "string",
      "readOnly": true,
      "description": "The current status. One of the following: \"queued\", \"working\", \"failed\", \"completed\""
    },
    "message": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "Message from the job worker, if any"
    },
    "results": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/JobStatusResultObject"
          },
          "nullable": true
        },
        {
          "type": "object",
          "required": [
            "success"
          ],
          "properties": {
            "success": {
              "type": "boolean",
              "readOnly": true,
              "description": "Whether the action was successful or not"
            }
          }
        }
      ],
      "readOnly": true,
      "description": "Result data from processed tasks. See [Results](https://developer.zendesk.com) below"
    },
    "job_type": {
      "type": "string",
      "readOnly": true,
      "description": "The type of the job"
    },
    "progress": {
      "type": "integer",
      "nullable": true,
      "readOnly": true,
      "description": "Number of tasks that have already been completed"
    }
  }
}
object JobStatusResponse
{
  "type": "object",
  "properties": {
    "job_status": {
      "$ref": "#/components/schemas/JobStatusObject"
    }
  }
}
object JobStatusResultObject
{
  "oneOf": [
    {
      "$ref": "#/components/schemas/CreateResourceResult"
    },
    {
      "$ref": "#/components/schemas/UpdateResourceResult"
    }
  ],
  "additionalProperties": true
}
object JobStatusesResponse
{
  "type": "object",
  "required": [
    "job_statuses"
  ],
  "properties": {
    "job_statuses": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/JobStatusObject"
      }
    }
  }
}
object ListDeletedTicketsResponse
{
  "type": "object",
  "allOf": [
    {
      "type": "object",
      "properties": {
        "deleted_tickets": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer"
              },
              "actor": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              },
              "subject": {
                "type": "string"
              },
              "deleted_at": {
                "type": "string"
              },
              "previous_state": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    {
      "$ref": "#/components/schemas/OffsetPaginationObject"
    }
  ]
}
object ListTicketCollaboratorsResponse
{
  "type": "object",
  "additionalProperties": true
}
object ListTicketEmailCCsResponse
{
  "type": "object",
  "additionalProperties": true
}
object ListTicketFollowersResponse
{
  "type": "object",
  "additionalProperties": true
}
object ListTicketIncidentsResponse
{
  "type": "object",
  "additionalProperties": true
}
object ListTicketProblemsResponse
{
  "type": "object",
  "additionalProperties": true
}
object LocaleObject
{
  "type": "object",
  "example": {
    "id": 1,
    "url": "https://company.zendesk.com/api/v2/locales/en-US.json",
    "name": "English",
    "locale": "en-US",
    "created_at": "2009-07-20T22:55:29Z",
    "updated_at": "2011-05-05T10:38:52Z"
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "The unique ID of the locale"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The URL of the locale record"
    },
    "name": {
      "type": "string",
      "readOnly": true,
      "description": "The name of the language"
    },
    "locale": {
      "type": "string",
      "readOnly": true,
      "description": "The name of the locale"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The ISO 8601 formatted date-time the locale was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The ISO 8601 formatted date-time when the locale was last updated"
    }
  }
}
object LocaleResponse
{
  "type": "object",
  "properties": {
    "locale": {
      "$ref": "#/components/schemas/LocaleObject"
    }
  }
}
object LocalesResponse
{
  "type": "object",
  "properties": {
    "locales": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/LocaleObject"
      }
    }
  }
}
object MacroApplyTicketResponse
{
  "type": "object",
  "properties": {
    "result": {
      "type": "object",
      "properties": {
        "ticket": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer"
            },
            "url": {
              "type": "string"
            },
            "fields": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer"
                },
                "value": {
                  "type": "string"
                }
              }
            },
            "comment": {
              "type": "object",
              "properties": {
                "body": {
                  "type": "string"
                },
                "public": {
                  "type": "boolean"
                },
                "scoped_body": {
                  "type": "array",
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "group_id": {
              "type": "integer"
            },
            "assignee_id": {
              "type": "integer"
            }
          }
        }
      }
    }
  }
}
object MacroAttachmentObject
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when created"
    },
    "size": {
      "type": "integer",
      "readOnly": true,
      "description": "The size of the image file in bytes"
    },
    "filename": {
      "type": "string",
      "readOnly": true,
      "description": "The name of the image file"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time when this attachment was created"
    },
    "content_url": {
      "type": "string",
      "readOnly": true,
      "description": "A full URL where the attachment image file can be downloaded"
    },
    "content_type": {
      "type": "string",
      "readOnly": true,
      "description": "The content type of the image. Example value: \"image/png\""
    }
  }
}
object MacroAttachmentResponse
{
  "type": "object",
  "properties": {
    "macro_attachment": {
      "$ref": "#/components/schemas/MacroAttachmentObject"
    }
  }
}
object MacroAttachmentsResponse
{
  "type": "object",
  "properties": {
    "macro_attachments": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/MacroAttachmentObject"
      }
    }
  }
}
object MacroCategoriesResponse
{
  "type": "object",
  "properties": {
    "categories": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
}
object MacroCommonObject
{
  "type": "object",
  "example": {
    "id": 360111062754,
    "url": "https://subdomain.zendesk.com/api/v2/macros/360111062754.json",
    "title": "Close and redirect to topics",
    "active": true,
    "actions": [
      {
        "field": "status",
        "value": "solved"
      },
      {
        "field": "priority",
        "value": "normal"
      },
      {
        "field": "type",
        "value": "incident"
      },
      {
        "field": "assignee_id",
        "value": "current_user"
      },
      {
        "field": "group_id",
        "value": "current_groups"
      },
      {
        "field": "comment_value",
        "value": "Thanks for your request. This issue you reported is a known issue. For more information, please visit our forums. "
      }
    ],
    "default": false,
    "position": 9999,
    "created_at": "2019-09-16T02:17:38Z",
    "updated_at": "2019-09-16T02:17:38Z",
    "description": null,
    "restriction": null
  },
  "required": [
    "actions",
    "title"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "The ID automatically assigned when a macro is created"
    },
    "url": {
      "type": "string",
      "description": "A URL to access the macro's details"
    },
    "title": {
      "type": "string",
      "description": "The title of the macro"
    },
    "active": {
      "type": "boolean",
      "description": "Useful for determining if the macro should be displayed"
    },
    "actions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ActionObject"
      },
      "description": "Each action describes what the macro will do. See [Actions reference](https://developer.zendesk.com)"
    },
    "default": {
      "type": "boolean",
      "readOnly": true,
      "description": "If true, the macro is a default macro"
    },
    "position": {
      "type": "integer",
      "description": "The position of the macro"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time the macro was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time of the last update of the macro"
    },
    "description": {
      "type": "string",
      "nullable": true,
      "description": "The description of the macro"
    },
    "restriction": {
      "type": "object",
      "nullable": true,
      "description": "Access to this macro. A null value allows unrestricted access for all users in the account",
      "additionalProperties": true
    }
  }
}
object MacroInput
{
  "type": "object",
  "required": [
    "title",
    "actions"
  ],
  "properties": {
    "title": {
      "type": "string",
      "description": "The title of the macro"
    },
    "active": {
      "type": "boolean",
      "description": "Useful for determining if the macro should be displayed"
    },
    "actions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ActionObject"
      },
      "description": "Each action describes what the macro will do"
    },
    "description": {
      "type": "string",
      "nullable": true,
      "description": "The description of the macro"
    },
    "restriction": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "description": "The numeric ID of the group or user"
        },
        "ids": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The numeric IDs of the groups"
        },
        "type": {
          "type": "string",
          "description": "Allowed values are Group or User"
        }
      },
      "description": "Who may access this macro. Will be null when everyone in the account can access it",
      "additionalProperties": true
    }
  }
}
object MacroObject
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/MacroCommonObject"
    },
    {
      "type": "object",
      "properties": {
        "usage_1h": {
          "type": "integer",
          "description": "The number of times each macro has been used in the past hour"
        },
        "usage_7d": {
          "type": "integer",
          "description": "The number of times each macro has been used in the past week"
        },
        "usage_24h": {
          "type": "integer",
          "description": "The number of times each macro has been used in the past day"
        },
        "usage_30d": {
          "type": "integer",
          "description": "The number of times each macro has been used in the past thirty days"
        },
        "categories": {
          "type": "string",
          "nullable": true,
          "description": "The macro categories"
        },
        "permissions": {
          "type": "string",
          "nullable": true,
          "description": "Permissions for each macro"
        },
        "app_installation": {
          "type": "string",
          "nullable": true,
          "description": "The app installation that requires each macro, if present"
        }
      }
    }
  ],
  "example": {
    "id": 25,
    "title": "Close and Save",
    "active": true,
    "actions": [],
    "position": 42,
    "description": "Sets the ticket status to `solved`",
    "restriction": {
      "id": 4,
      "type": "User"
    }
  }
}
object MacroResponse
{
  "type": "object",
  "properties": {
    "macro": {
      "$ref": "#/components/schemas/MacroObject"
    }
  }
}
object MacroUpdateManyInput
{
  "type": "object",
  "properties": {
    "macros": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "The ID of the macro to update"
          },
          "active": {
            "type": "boolean",
            "description": "The active status of the macro (true or false)"
          },
          "position": {
            "type": "integer",
            "description": "The new position of the macro"
          }
        }
      }
    }
  }
}
object MacrosCreateNewMacroRequest
{
  "type": "object",
  "properties": {
    "macro": {
      "$ref": "#/components/schemas/MacroInput"
    }
  }
}
object MacrosCreateNewMacroResponse
{
  "type": "object",
  "properties": {
    "macro": {
      "$ref": "#/components/schemas/MacroObject"
    }
  }
}
object MacrosListActionDefinitionsResponse
{
  "type": "object",
  "properties": {
    "definitions": {
      "type": "object",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          }
        }
      }
    }
  }
}
object MacrosListSupportedActionsResponse
{
  "type": "object",
  "properties": {
    "actions": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  }
}
object MacrosResponse
{
  "type": "object",
  "allOf": [
    {
      "type": "object",
      "properties": {
        "macros": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/MacroObject"
          }
        }
      }
    },
    {
      "$ref": "#/components/schemas/OffsetPaginationObject"
    }
  ]
}
object MacrosUpdateMacroAgentRequest
{
  "type": "object",
  "properties": {
    "macro": {
      "$ref": "#/components/schemas/MacroInput"
    }
  }
}
object MacrosUpdateMacroAgentResponse
{
  "type": "object",
  "properties": {
    "macro": {
      "$ref": "#/components/schemas/MacroObject"
    }
  }
}
object OffsetPaginationObject
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "description": "the total record count"
    },
    "next_page": {
      "type": "string",
      "format": "url",
      "nullable": true,
      "description": "the URL of the next page"
    },
    "previous_page": {
      "type": "string",
      "format": "url",
      "nullable": true,
      "description": "the URL of the previous page"
    }
  }
}
object OrganizationFieldResponse
{
  "type": "object",
  "properties": {
    "organization_field": {
      "$ref": "#/components/schemas/CustomFieldObject"
    }
  }
}
string OrganizationFieldsReorderFieldResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object OrganizationFieldsResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true,
      "description": "Total count of records retrieved"
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "URL of the next page"
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "URL of the previous page"
    },
    "organization_fields": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomFieldObject"
      }
    }
  }
}
object OrganizationMembershipObject
{
  "type": "object",
  "example": {
    "id": 4,
    "url": "https://example.zendesk.com/api/v2/organization_memberships/4.json",
    "default": true,
    "user_id": 29,
    "created_at": "2009-05-13T00:07:08Z",
    "updated_at": "2011-07-22T00:11:12Z",
    "view_tickets": true,
    "organization_id": 12,
    "organization_name": "first organization"
  },
  "required": [
    "user_id",
    "organization_id",
    "default"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when the membership is created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of this membership"
    },
    "default": {
      "type": "boolean",
      "nullable": true,
      "description": "Denotes whether this is the default organization membership for the user. If false, returns `null`"
    },
    "user_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The ID of the user for whom this memberships belongs"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When this record was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When this record last got updated"
    },
    "view_tickets": {
      "type": "boolean",
      "readOnly": true,
      "description": "Denotes whether the user can or cannot have access to all organization's tickets."
    },
    "organization_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The ID of the organization associated with this user, in this membership"
    },
    "organization_name": {
      "type": "string",
      "readOnly": true,
      "description": "The name of the organization associated with this user, in this membership"
    }
  }
}
object OrganizationMembershipResponse
{
  "type": "object",
  "properties": {
    "organization_membership": {
      "$ref": "#/components/schemas/OrganizationMembershipObject"
    }
  }
}
object OrganizationMembershipsResponse
{
  "type": "object",
  "properties": {
    "organization_memberships": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/OrganizationMembershipObject"
      }
    }
  }
}
object OrganizationMergeListResponse
{
  "type": "object",
  "properties": {
    "organization_merges": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "string"
          },
          "url": {
            "type": "string",
            "format": "string"
          },
          "status": {
            "enum": [
              "new",
              "in_progress",
              "error",
              "complete"
            ],
            "type": "string"
          },
          "loser_id": {
            "type": "integer"
          },
          "winner_id": {
            "type": "integer"
          }
        }
      },
      "required": [
        "id",
        "url",
        "loser_id",
        "winner_id",
        "status"
      ]
    }
  }
}
object OrganizationMergeRequest
{
  "type": "object",
  "properties": {
    "organization_merge": {
      "type": "object",
      "properties": {
        "winner_id": {
          "type": "integer",
          "required": [
            "winner_id"
          ],
          "description": "The id of the winning organization."
        }
      }
    }
  }
}
object OrganizationMergeResponse
{
  "type": "object",
  "properties": {
    "organization_merge": {
      "type": "object",
      "required": [
        "id",
        "url",
        "loser_id",
        "winner_id",
        "status"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "string"
        },
        "url": {
          "type": "string",
          "format": "string"
        },
        "status": {
          "enum": [
            "new",
            "in_progress",
            "error",
            "complete"
          ],
          "type": "string"
        },
        "loser_id": {
          "type": "integer"
        },
        "winner_id": {
          "type": "integer"
        }
      }
    }
  }
}
object OrganizationMetadataObject
{
  "type": "object",
  "properties": {
    "users_count": {
      "type": "integer",
      "description": "The number of users for the organization"
    },
    "tickets_count": {
      "type": "integer",
      "description": "The number of tickets for the organization"
    }
  }
}
object OrganizationObject
{
  "type": "object",
  "example": {
    "id": 35436,
    "url": "https://company.zendesk.com/api/v2/organizations/35436.json",
    "name": "One Organization",
    "tags": [
      "enterprise",
      "other_tag"
    ],
    "notes": "",
    "details": "This is a kind of organization",
    "group_id": null,
    "created_at": "2009-07-20T22:55:29Z",
    "updated_at": "2011-05-05T10:38:52Z",
    "external_id": "ABC123",
    "domain_names": [
      "example.com",
      "test.com"
    ],
    "shared_tickets": true,
    "shared_comments": true,
    "organization_fields": {
      "org_decimal": 5.2,
      "org_dropdown": "option_1"
    }
  },
  "properties": {
    "id": {
      "type": "integer",
      "description": "Automatically assigned when the organization is created"
    },
    "url": {
      "type": "string",
      "description": "The API url of this organization"
    },
    "name": {
      "type": "string",
      "description": "A unique name for the organization"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The tags of the organization"
    },
    "notes": {
      "type": "string",
      "nullable": true,
      "description": "Any notes you have about the organization"
    },
    "details": {
      "type": "string",
      "nullable": true,
      "description": "Any details obout the organization, such as the address"
    },
    "group_id": {
      "type": "integer",
      "nullable": true,
      "description": "New tickets from users in this organization are automatically put in this group"
    },
    "created_at": {
      "type": "string",
      "readOnly": true,
      "description": "The time the organization was created"
    },
    "updated_at": {
      "type": "string",
      "readOnly": true,
      "description": "The time of the last update of the organization"
    },
    "external_id": {
      "type": "string",
      "nullable": true,
      "description": "A unique external id to associate organizations to an external record. The id is case-insensitive. For example, \"company1\" and \"Company1\" are considered the same"
    },
    "domain_names": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "An array of domain names associated with this organization"
    },
    "shared_tickets": {
      "type": "boolean",
      "description": "End users in this organization are able to see each other's tickets"
    },
    "shared_comments": {
      "type": "boolean",
      "description": "End users in this organization are able to comment on each other's tickets"
    },
    "organization_fields": {
      "type": "object",
      "nullable": true,
      "description": "Custom fields for this organization. See [Custom organization fields](/api-reference/ticketing/organizations/organizations/#custom-organization-fields)",
      "additionalProperties": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "number"
          }
        ]
      }
    }
  }
}
object OrganizationResponse
{
  "type": "object",
  "properties": {
    "organization": {
      "$ref": "#/components/schemas/OrganizationObject"
    }
  }
}
object OrganizationSubscriptionCreateRequest
{
  "type": "object",
  "properties": {
    "organization_subscription": {
      "$ref": "#/components/schemas/OrganizationSubscriptionInput"
    }
  }
}
object OrganizationSubscriptionInput
{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "integer",
      "description": "The ID of the user"
    },
    "organization_id": {
      "type": "integer",
      "description": "The ID of the organization"
    }
  }
}
object OrganizationSubscriptionObject
{
  "type": "object",
  "title": "Organization Subscriptions",
  "example": {
    "id": 1234,
    "user_id": 482,
    "created_at": "2009-07-20T22:55:29Z",
    "organization_id": 32
  },
  "properties": {
    "id": {
      "type": "integer",
      "description": "The ID of the organization subscription"
    },
    "user_id": {
      "type": "integer",
      "description": "The ID of the user"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "The date the organization subscription was created"
    },
    "organization_id": {
      "type": "integer",
      "description": "The ID of the organization"
    }
  }
}
object OrganizationSubscriptionResponse
{
  "type": "object",
  "properties": {
    "organization_subscription": {
      "$ref": "#/components/schemas/OrganizationSubscriptionObject"
    }
  }
}
object OrganizationSubscriptionsResponse
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/OffsetPaginationObject"
    },
    {
      "type": "object",
      "properties": {
        "organization_subscriptions": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/OrganizationSubscriptionObject"
          },
          "description": "An array of organization subscriptions"
        }
      }
    }
  ]
}
object OrganizationsRelatedResponse
{
  "type": "object",
  "properties": {
    "organization_related": {
      "$ref": "#/components/schemas/OrganizationMetadataObject"
    }
  }
}
object OrganizationsResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "next_page": {
      "type": "string",
      "nullable": true
    },
    "organizations": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/OrganizationObject"
      }
    },
    "previous_page": {
      "type": "string",
      "nullable": true
    }
  }
}
object Pagination
{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object",
      "properties": {
        "has_more": {
          "type": "boolean"
        },
        "after_cursor": {
          "type": "string"
        },
        "before_cursor": {
          "type": "string"
        }
      }
    },
    "links": {
      "type": "object",
      "properties": {
        "next": {
          "type": "string"
        },
        "prev": {
          "type": "string"
        }
      }
    }
  }
}
string PushNotificationDevicesBulkUnregisterResponse
{
  "type": "string",
  "example": "",
  "description": "empty"
}
array PushNotificationDevicesInput
{
  "type": "array",
  "items": {
    "type": "string",
    "description": "Mobile device token"
  }
}
object PushNotificationDevicesRequest
{
  "type": "object",
  "properties": {
    "push_notification_devices": {
      "$ref": "#/components/schemas/PushNotificationDevicesInput"
    }
  }
}
object QueueObject
{
  "type": "object",
  "example": {
    "id": "01HG80ATNNZK1N7XRFVKX48XD6",
    "url": "https://company.zendesk.com/api/v2/queues/01HG80ATNNZK1N7XRFVKX48XD6.json",
    "name": "New queue with valid definition",
    "order": 1,
    "priority": 1,
    "created_at": "2023-11-27T09:03:59Z",
    "definition": {
      "all": [
        {
          "field": "priority",
          "value": "urgent",
          "operator": "is"
        }
      ],
      "any": []
    },
    "updated_at": "2023-11-27T09:03:59Z",
    "description": "Queue description",
    "primary_groups": {
      "count": 2,
      "groups": [
        {
          "id": 6784729637757,
          "name": "EWR"
        },
        {
          "id": 5399674286077,
          "name": "test"
        }
      ]
    },
    "secondary_groups": {
      "count": 0,
      "groups": []
    }
  },
  "properties": {
    "id": {
      "type": "string",
      "readOnly": true,
      "description": "Automatically assigned when creating queue"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API URL of the queue"
    },
    "name": {
      "type": "string",
      "description": "The name of the queue"
    },
    "order": {
      "type": "integer",
      "description": "The queue-applied order"
    },
    "priority": {
      "type": "integer",
      "description": "The queue-applied priority"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the queue was created"
    },
    "definition": {
      "type": "object",
      "properties": {
        "all": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "field": {
                "type": "string"
              },
              "value": {
                "type": "string"
              },
              "operator": {
                "type": "string"
              }
            }
          }
        },
        "any": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "field": {
                "type": "string"
              },
              "value": {
                "type": "string"
              },
              "operator": {
                "type": "string"
              }
            }
          }
        }
      },
      "description": "Conditions when queue could be applied"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the queue's last update"
    },
    "description": {
      "type": "string",
      "description": "The description of the queue"
    },
    "primary_groups": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer"
        },
        "groups": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer"
              },
              "name": {
                "type": "string"
              }
            }
          }
        }
      },
      "description": "Primary group ids linked to the queue"
    },
    "secondary_groups": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer"
        },
        "groups": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer"
              },
              "name": {
                "type": "string"
              }
            }
          }
        }
      },
      "description": "Secondary group ids linked to the queue"
    }
  }
}
object QueueResponse
{
  "type": "object",
  "properties": {
    "queue": {
      "$ref": "#/components/schemas/QueueObject"
    }
  }
}
object QueuesResponse
{
  "type": "object",
  "properties": {
    "queues": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/QueueObject"
      }
    }
  }
}
object RecoverSuspendedTicketResponse
{
  "type": "object",
  "properties": {
    "ticket": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SuspendedTicketObject"
      }
    }
  }
}
object RecoverSuspendedTicketUnprocessableContentResponse
{
  "type": "object",
  "properties": {
    "ticket": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SuspendedTicketObject"
      }
    }
  }
}
object RecoverSuspendedTicketsResponse
{
  "type": "object",
  "properties": {
    "tickets": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SuspendedTicketObject"
      }
    }
  }
}
object RelationshipFilterDefinition
{
  "type": "object",
  "properties": {
    "conditions_all": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerConditionDefinitionObjectAll"
      }
    },
    "conditions_any": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerConditionDefinitionObjectAny"
      }
    }
  }
}
object RelationshipFilterDefinitionResponse
{
  "type": "object",
  "properties": {
    "definitions": {
      "$ref": "#/components/schemas/RelationshipFilterDefinition"
    }
  }
}
object RenewSessionResponse
{
  "type": "object",
  "properties": {
    "authenticity_token": {
      "type": "string",
      "description": "A token of authenticity for the request"
    }
  }
}
object RequestObject
{
  "type": "object",
  "example": {
    "id": 35436,
    "url": "https://company.zendesk.com/api/v2/requests/35436.json",
    "via": {
      "channel": "web"
    },
    "type": "problem",
    "due_at": "2011-05-24T12:00:00Z",
    "status": "open",
    "subject": "Help, my printer is on fire!",
    "group_id": 8665,
    "priority": "normal",
    "created_at": "2009-07-20T22:55:29Z",
    "updated_at": "2011-05-05T10:38:52Z",
    "assignee_id": 72983,
    "description": "The fire is very colorful.",
    "requester_id": 1462,
    "ticket_form_id": 2,
    "organization_id": 509974,
    "collaborator_ids": [],
    "can_be_solved_by_me": false
  },
  "required": [
    "subject"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when creating requests"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of this request"
    },
    "via": {
      "$ref": "#/components/schemas/TicketAuditViaObject"
    },
    "type": {
      "type": "string",
      "description": "The type of the request, \"question\", \"incident\", \"problem\", \"task\""
    },
    "due_at": {
      "type": "string",
      "format": "date-time",
      "description": "When the task is due (only applies if the request is of type \"task\")"
    },
    "solved": {
      "type": "boolean",
      "description": "Whether or not request is solved (an end user can set this if \"can_be_solved_by_me\", above, is true for that user)"
    },
    "status": {
      "type": "string",
      "description": "The state of the request, \"new\", \"open\", \"pending\", \"hold\", \"solved\", \"closed\""
    },
    "subject": {
      "type": "string",
      "description": "The value of the subject field for this request if the subject field is visible to end users; a truncated version of the description otherwise"
    },
    "group_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of the assigned group if the field is visible to end users"
    },
    "priority": {
      "type": "string",
      "description": "The priority of the request, \"low\", \"normal\", \"high\", \"urgent\""
    },
    "is_public": {
      "type": "boolean",
      "readOnly": true,
      "description": "Is true if any comments are public, false otherwise"
    },
    "recipient": {
      "type": "string",
      "description": "The original recipient e-mail address of the request"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When this record was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When this record last got updated"
    },
    "assignee_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of the assignee if the field is visible to end users"
    },
    "description": {
      "type": "string",
      "readOnly": true,
      "description": "Read-only first comment on the request. When [creating a request](https://developer.zendesk.com), use `comment` to set the description"
    },
    "email_cc_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "readOnly": true,
      "description": "The ids of users who are currently email CCs on the ticket. See [CCs and followers resources](https://support.zendesk.com/hc/en-us/articles/360020585233) in the Support Help Center"
    },
    "requester_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of the requester"
    },
    "custom_fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "description": "Custom fields for the request. See [Setting custom field values](/api-reference/ticketing/tickets/tickets/#setting-custom-field-values) in the Tickets doc"
    },
    "ticket_form_id": {
      "type": "integer",
      "description": "The numeric id of the ticket form associated with this request if the form is visible to end users - only applicable for enterprise accounts"
    },
    "organization_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The organization of the requester"
    },
    "collaborator_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "readOnly": true,
      "description": "The ids of users currently CC'ed on the ticket"
    },
    "custom_status_id": {
      "type": "integer",
      "description": "The custom ticket status id of the ticket"
    },
    "followup_source_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of the original ticket if this request is a follow-up ticket. See [Create Request](https://developer.zendesk.com)"
    },
    "can_be_solved_by_me": {
      "type": "boolean",
      "readOnly": true,
      "description": "If true, an end user can mark the request as solved. See [Update Request](/api-reference/ticketing/tickets/ticket-requests/#update-request)"
    }
  }
}
object RequestResponse
{
  "type": "object",
  "properties": {
    "request": {
      "$ref": "#/components/schemas/RequestObject"
    }
  }
}
object RequestsResponse
{
  "type": "object",
  "properties": {
    "requests": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/RequestObject"
      }
    }
  }
}
object ResellerCheckSubdomainAvailabilityResponse
{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    }
  }
}
object ResourceCollectionObject
{
  "type": "object",
  "example": {
    "id": 35436,
    "resources": [
      {
        "type": "triggers",
        "deleted": false,
        "identifier": "email_on_ticket_solved",
        "resource_id": 10824486485524
      },
      {
        "type": "ticket_fields",
        "deleted": false,
        "identifier": "support_description",
        "resource_id": 10824486482580
      }
    ],
    "created_at": "2011-07-20T22:55:29Z",
    "updated_at": "2011-07-20T22:55:29Z"
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "id for the resource collection. Automatically assigned upon creation"
    },
    "resources": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "deleted": {
            "type": "boolean"
          },
          "identifier": {
            "type": "string"
          },
          "resource_id": {
            "type": "integer"
          }
        }
      },
      "readOnly": true,
      "description": "Array of resource metadata objects. See [Resource objects](https://developer.zendesk.com)"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the resource collection was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Last time the resource collection was updated"
    }
  }
}
object ResourceCollectionResponse
{
  "type": "object",
  "properties": {
    "resource_collection": {
      "$ref": "#/components/schemas/ResourceCollectionObject"
    }
  }
}
object ResourceCollectionsResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "resource_collections": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ResourceCollectionObject"
      }
    }
  }
}
object ReverseLookupResponse
{
  "type": "object",
  "anyOf": [
    {
      "$ref": "#/components/schemas/UsersResponse"
    }
  ]
}
object SLAPoliciesResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "sla_policies": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SLAPolicyObject"
      }
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    }
  }
}
object SLAPolicyFilterConditionObject
{
  "type": "object",
  "properties": {
    "field": {
      "type": "string",
      "description": "The name of a ticket field"
    },
    "value": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              }
            ]
          }
        }
      ],
      "description": "The value of a ticket field"
    },
    "operator": {
      "type": "string",
      "description": "A comparison operator"
    }
  }
}
object SLAPolicyFilterDefinitionResponse
{
  "type": "object",
  "properties": {
    "definitions": {
      "type": "object",
      "properties": {
        "all": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "group": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "value": {
                "type": "string"
              },
              "target": {
                "type": "string",
                "nullable": true
              },
              "values": {
                "type": "object",
                "properties": {
                  "list": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string"
                        },
                        "value": {
                          "type": "string",
                          "nullable": true
                        }
                      }
                    }
                  },
                  "type": {
                    "type": "string"
                  }
                }
              },
              "operators": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "any": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "group": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "value": {
                "type": "string"
              },
              "target": {
                "type": "string",
                "nullable": true
              },
              "values": {
                "type": "object",
                "properties": {
                  "list": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string"
                        },
                        "value": {
                          "type": "string",
                          "nullable": true
                        }
                      }
                    }
                  },
                  "type": {
                    "type": "string"
                  }
                }
              },
              "operators": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
object SLAPolicyFilterObject
{
  "type": "object",
  "properties": {
    "all": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SLAPolicyFilterConditionObject"
      }
    },
    "any": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SLAPolicyFilterConditionObject"
      }
    }
  },
  "description": "An object that describes the conditions that a ticket must match in order for an SLA policy to be applied to that ticket. See [Filter](https://developer.zendesk.com)."
}
object SLAPolicyMetricObject
{
  "type": "object",
  "properties": {
    "metric": {
      "type": "string",
      "description": "The definition of the time that is being measured"
    },
    "target": {
      "type": "integer",
      "description": "The time within which the end-state for a metric should be met"
    },
    "priority": {
      "type": "string",
      "description": "Priority that a ticket must match"
    },
    "business_hours": {
      "type": "boolean",
      "description": "Whether the metric targets are being measured in business hours or calendar hours"
    }
  }
}
object SLAPolicyObject
{
  "type": "object",
  "example": {
    "id": 25,
    "url": "https://company.zendesk.com/api/v2/slas/policies/25.json",
    "title": "Silver Plan",
    "filter": {
      "all": [
        {
          "field": "type",
          "value": "incident",
          "operator": "is"
        },
        {
          "field": "via_id",
          "value": "4",
          "operator": "is"
        },
        {
          "field": "custom_status_id",
          "value": [
            "1",
            "2"
          ],
          "operator": "includes"
        }
      ],
      "any": []
    },
    "position": 3,
    "created_at": "2015-03-17T22:50:26Z",
    "updated_at": "2015-03-17T22:50:26Z",
    "description": "Organizations: Silver Plan",
    "policy_metrics": [
      {
        "metric": "first_reply_time",
        "target": 60,
        "priority": "low",
        "business_hours": false
      }
    ]
  },
  "required": [
    "title",
    "filter"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "URL of the SLA Policy reacord"
    },
    "title": {
      "type": "string",
      "description": "The title of the SLA policy"
    },
    "filter": {
      "$ref": "#/components/schemas/SLAPolicyFilterObject"
    },
    "position": {
      "type": "integer",
      "description": "Position of the SLA policy that determines the order they will be matched. If not specified, the SLA policy is added as the last position"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the SLA policy was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the last update of the SLA policy"
    },
    "description": {
      "type": "string",
      "description": "The description of the SLA policy"
    },
    "policy_metrics": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SLAPolicyMetricObject"
      },
      "description": "Array of [Policy Metric](https://developer.zendesk.com) objects"
    }
  }
}
object SLAPolicyResponse
{
  "type": "object",
  "properties": {
    "sla_policy": {
      "$ref": "#/components/schemas/SLAPolicyObject"
    }
  }
}
object SatisfactionRatingObject
{
  "type": "object",
  "example": {
    "id": 35436,
    "url": "https://company.zendesk.com/api/v2/satisfaction_ratings/62.json",
    "score": "good",
    "group_id": 44,
    "ticket_id": 208,
    "created_at": "2011-07-20T22:55:29Z",
    "updated_at": "2011-07-20T22:55:29Z",
    "assignee_id": 135,
    "requester_id": 7881
  },
  "required": [
    "assignee_id",
    "group_id",
    "requester_id",
    "ticket_id",
    "score"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned upon creation"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of this rating"
    },
    "score": {
      "type": "string",
      "description": "The rating \"offered\", \"unoffered\", \"good\" or \"bad\""
    },
    "reason": {
      "type": "string",
      "description": "The reason for a bad rating given by the requester in a follow-up question. Satisfaction reasons must be [enabled](https://support.zendesk.com/hc/en-us/articles/223152967)"
    },
    "comment": {
      "type": "string",
      "description": "The comment received with this rating, if available"
    },
    "group_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of group assigned to at the time of rating"
    },
    "reason_id": {
      "type": "integer",
      "description": "id for the reason the user gave a negative rating. Can only be set on ratings with a `score` of \"bad\". To get a descriptive value for the id, use the [Show Reason for Satisfaction Rating](/api-reference/ticketing/ticket-management/satisfaction_reasons/#show-reason-for-satisfaction-rating) endpoint"
    },
    "ticket_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of ticket being rated"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the satisfaction rating got created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the satisfaction rating got updated"
    },
    "assignee_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of agent assigned to at the time of rating"
    },
    "reason_code": {
      "type": "integer",
      "description": "The default reasons the user can select from a list menu for giving a negative rating. See [Reason codes](/api-reference/ticketing/ticket-management/satisfaction_reasons/#reason-codes) in the Satisfaction Reasons API. Can only be set on ratings with a `score` of \"bad\". Responses don't include this property"
    },
    "requester_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of ticket requester submitting the rating"
    }
  }
}
object SatisfactionRatingResponse
{
  "type": "object",
  "properties": {
    "satisfaction_rating": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SatisfactionRatingObject"
      }
    }
  }
}
object SatisfactionRatingsCountResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer"
        },
        "refreshed_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    }
  }
}
object SatisfactionRatingsResponse
{
  "type": "object",
  "properties": {
    "satisfaction_ratings": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SatisfactionRatingObject"
      }
    }
  }
}
object SatisfactionReasonObject
{
  "type": "object",
  "example": {
    "id": 35436,
    "url": "https://example.zendesk.com/api/v2/satisfaction_reasons/35436.json",
    "value": "Agent did not respond quickly",
    "raw_value": "{{dc.reason_code_1003}}",
    "created_at": "2011-07-20T22:55:29Z",
    "deleted_at": "2012-03-12T12:45:32Z",
    "updated_at": "2011-07-20T22:55:29Z",
    "reason_code": 1003
  },
  "required": [
    "value"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned upon creation"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "API URL for the resource"
    },
    "value": {
      "type": "string",
      "description": "Translated value of the reason in the account locale"
    },
    "raw_value": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the current \"value\", if not. See [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the reason was created"
    },
    "deleted_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the reason was deleted"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the reason was updated"
    },
    "reason_code": {
      "type": "integer",
      "readOnly": true,
      "description": "An account-level code for referencing the reason. Custom reasons are assigned an auto-incrementing integer (non-system reason codes begin at 1000). See [Reason codes](https://developer.zendesk.com)"
    }
  }
}
object SatisfactionReasonResponse
{
  "type": "object",
  "properties": {
    "reason": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SatisfactionReasonObject"
      }
    }
  }
}
object SatisfactionReasonsResponse
{
  "type": "object",
  "properties": {
    "reasons": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SatisfactionReasonObject"
      }
    }
  }
}
object SearchCountResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    }
  }
}
object SearchExportResponse
{
  "type": "object",
  "example": {
    "meta": {
      "has_more": true,
      "after_cursor": "eyJmaWVsZCI6ImNyZWF0ZWRfYXQiLCJkZXNjIjp0cnVlLCJ0aWVCcmVha0ZpZWxkIjoiaWQiLCJ0aWVCcmVha0Rlc2MiOmZhbHNlLCJzb3J0VmFsdWVzIjpudWxsLCJleHBvcnRlZFRodXNGYXIiOjAsInNlc3Npb25TdGFydCI6MTYwNzAzOTI1Mzk4NSwiY3JlYXRlZEF0IjoxNjA3MDM5MjUzOTg1LCJzYWx0ZWRSZXF1ZXN0SGFzaCI6LTQ5ODM0ODc3LCJzYWx0ZWRDdXJzb3JIYXNoIjotMjQwMzQ4MjgwfQ==",
      "before_cursor": null
    },
    "links": {
      "next": "https://example.zendesk.com/api/v2/search/export.json?filter%5Btype%5D=ticket&page%5Bafter%5D=eyJmaWVsZCI6ImNyZWF0ZWRfYXQiLCJkZXNjIjp0cnVlLCJ0aWVCcmVha0ZpZWxkIjoiaWQiLCJ0aWVCcmVha0Rlc2MiOmZhbHNlLCJzb3J0VmFsdWVzIjpudWxsLCJleHBvcnRlZFRodXNGYXIiOjAsInNlc3Npb25TdGFydCI6MTYwNzAzOTI1Mzk4NSwiY3JlYXRlZEF0IjoxNjA3MDM5MjUzOTg1LCJzYWx0ZWRSZXF1ZXN0SGFzaCI6LTQ5ODM0ODc3LCJzYWx0ZWRDdXJzb3JIYXNoIjotMjQwMzQ4MjgwfQ%3D%3D&page%5Bsize%5D=100&query=hello%26page%5Bsize%5D%3D100%26filter%5Btype%5D%3Dticket",
      "prev": null
    },
    "facets": null,
    "results": []
  },
  "properties": {
    "meta": {
      "type": "object",
      "properties": {
        "has_more": {
          "type": "boolean",
          "readOnly": true,
          "description": "Whether there are more items yet to be returned by the cursor."
        },
        "after_cursor": {
          "type": "string",
          "nullable": true,
          "readOnly": true,
          "description": "The cursor id for the next object."
        },
        "before_cursor": {
          "type": "string",
          "nullable": true,
          "readOnly": true,
          "description": "The cursor id for the previous object."
        }
      },
      "description": "Metadata for the export query response."
    },
    "links": {
      "type": "object",
      "properties": {
        "next": {
          "type": "string",
          "nullable": true,
          "readOnly": true,
          "description": "The url to the next entry via the cursor."
        },
        "prev": {
          "type": "string",
          "nullable": true,
          "readOnly": true,
          "description": "The url to the previous entry via the cursor."
        }
      },
      "description": "The links to the previous and next entries via the cursor ids in the metadata."
    },
    "facets": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "The facets corresponding to the search query"
    },
    "results": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SearchResultObject"
      },
      "readOnly": true,
      "description": "May consist of tickets, users, groups, or organizations, as specified by the `result_type` property in each result object"
    }
  }
}
object SearchResponse
{
  "type": "object",
  "example": {
    "count": 1,
    "facets": null,
    "results": [
      {
        "id": 1835972,
        "url": "https://example.zendesk.com/api/v2/groups/1835972.json",
        "name": "Ragtail",
        "default": false,
        "deleted": false,
        "created_at": "2018-04-06T03:17:05Z",
        "updated_at": "2018-04-06T03:17:05Z",
        "description": "",
        "result_type": "group"
      }
    ],
    "next_page": null,
    "previous_page": null
  },
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true,
      "description": "The number of resources returned by the query corresponding to this page of results in the paginated response"
    },
    "facets": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "The facets corresponding to the search query"
    },
    "results": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SearchResultObject"
      },
      "readOnly": true,
      "description": "May consist of tickets, users, groups, or organizations, as specified by the `result_type` property in each result object"
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "URL to the next page of results"
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "URL to the previous page of results"
    }
  }
}
object SearchResultObject
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "The ID of the resource"
    },
    "url": {
      "type": "string",
      "description": "The url of the resource"
    },
    "name": {
      "type": "string",
      "description": "The name of the resource"
    },
    "default": {
      "type": "boolean",
      "description": "Flag to indicate whether this is the default resource"
    },
    "deleted": {
      "type": "boolean",
      "description": "Flag to indicate whether or not resource has been deleted"
    },
    "created_at": {
      "type": "string",
      "description": "When the resource was created"
    },
    "updated_at": {
      "type": "string",
      "description": "When the resource was last updated"
    },
    "description": {
      "type": "string",
      "description": "The description of the resource"
    },
    "result_type": {
      "type": "string",
      "description": "The type of the resource"
    }
  }
}
object SessionObject
{
  "type": "object",
  "example": {
    "id": 3432,
    "url": "https://company.zendesk.com/api/v2/users/12345/sessions/3432.json",
    "user_id": 12345,
    "last_seen_at": "2014-11-18T17:30:52Z",
    "authenticated_at": "2014-11-18T17:24:29Z"
  },
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "Automatically assigned when the session is created"
    },
    "url": {
      "type": "string",
      "nullable": true,
      "description": "The API URL of this session"
    },
    "user_id": {
      "type": "integer",
      "nullable": true,
      "description": "The id of the user"
    },
    "last_seen_at": {
      "type": "string",
      "nullable": true,
      "description": "The last approximate time this session was seen. This does not update on every request."
    },
    "authenticated_at": {
      "type": "string",
      "nullable": true,
      "description": "When the session was created"
    }
  }
}
object SessionResponse
{
  "type": "object",
  "properties": {
    "session": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SessionObject"
      }
    }
  }
}
object SessionsResponse
{
  "type": "object",
  "properties": {
    "sessions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SessionObject"
      }
    }
  }
}
object SharingAgreementObject
{
  "type": "object",
  "example": {
    "id": 88335,
    "url": "https://company.zendesk.com/api/v2/agreements/88335.json",
    "name": "Ticket Sharing",
    "type": "inbound",
    "status": "accepted",
    "created_at": "2012-02-20T22:55:29Z",
    "updated_at": "2013-02-20T22:55:29Z",
    "partner_name": "jira"
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned upon creation"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "URL of the sharing agreement record"
    },
    "name": {
      "type": "string",
      "description": "Name of this sharing agreement"
    },
    "type": {
      "type": "string",
      "description": "Can be one of the following: \"inbound\", \"outbound\""
    },
    "status": {
      "type": "string",
      "description": "Can be one of the following: \"accepted\", \"declined\", \"pending\", \"inactive\", \"failed\", \"ssl_error\", \"configuration_error\""
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the record was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the record was updated"
    },
    "partner_name": {
      "type": "string",
      "nullable": true,
      "description": "Can be one of the following: \"jira\", null"
    },
    "remote_subdomain": {
      "type": "string",
      "description": "Subdomain of the remote account or null if not associated with an account"
    }
  }
}
object SharingAgreementResponse
{
  "type": "object",
  "properties": {
    "sharing_agreement": {
      "$ref": "#/components/schemas/SharingAgreementObject"
    }
  }
}
object SharingAgreementsResponse
{
  "type": "object",
  "properties": {
    "sharing_agreements": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SharingAgreementObject"
      }
    }
  }
}
object SkillBasedRoutingAttributeDefinitions
{
  "type": "object",
  "properties": {
    "definitions": {
      "type": "object",
      "properties": {
        "conditions_all": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "title": {
                "type": "string"
              },
              "subject": {
                "type": "string"
              }
            }
          }
        },
        "conditions_any": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "title": {
                "type": "string"
              },
              "subject": {
                "type": "string"
              }
            }
          }
        }
      }
    }
  }
}
object SkillBasedRoutingAttributeObject
{
  "type": "object",
  "example": {
    "id": "15821cba-7326-11e8-b07e-950ba849aa27",
    "url": "https://{subdomain}.zendesk.com/api/v2/routing/attributes/15821cba-7326-11e8-b07e-950ba849aa27.json",
    "name": "color",
    "created_at": "2017-12-01T19:29:31Z",
    "updated_at": "2017-12-01T19:29:31Z"
  },
  "required": [
    "name"
  ],
  "properties": {
    "id": {
      "type": "string",
      "readOnly": true,
      "description": "Automatically assigned when an attribute is created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "URL of the attribute"
    },
    "name": {
      "type": "string",
      "description": "The name of the attribute"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When this record was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When this record was last updated"
    }
  }
}
object SkillBasedRoutingAttributeResponse
{
  "type": "object",
  "properties": {
    "attribute": {
      "$ref": "#/components/schemas/SkillBasedRoutingAttributeObject"
    }
  }
}
object SkillBasedRoutingAttributeValueObject
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "readOnly": true,
      "description": "Automatically assigned when an attribute value is created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "URL of the attribute value"
    },
    "name": {
      "type": "string",
      "description": "The name of the attribute value"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When this record was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When this record was last updated"
    },
    "attribute_id": {
      "type": "string",
      "description": "Id of the associated attribute"
    }
  }
}
object SkillBasedRoutingAttributeValueResponse
{
  "type": "object",
  "properties": {
    "attribute_value": {
      "$ref": "#/components/schemas/SkillBasedRoutingAttributeValueObject"
    }
  }
}
object SkillBasedRoutingAttributeValuesResponse
{
  "type": "object",
  "properties": {
    "attribute_values": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SkillBasedRoutingAttributeValueObject"
      }
    }
  }
}
object SkillBasedRoutingAttributesResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "attributes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SkillBasedRoutingAttributeObject"
      }
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    }
  }
}
object SkillBasedRoutingTicketFulfilledResponse
{
  "type": "object",
  "properties": {
    "fulfilled_ticket_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    }
  }
}
string SlaPoliciesReorderSlaPoliciesResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object SupportAddressObject
{
  "type": "object",
  "example": {
    "id": 35436,
    "name": "all",
    "email": "support@example.zendesk.com",
    "default": true,
    "brand_id": 123,
    "created_at": "2015-07-20T22:55:29Z",
    "spf_status": "verified",
    "updated_at": "2016-09-21T20:15:20Z",
    "cname_status": "verified",
    "forwarding_status": "unknown",
    "domain_verification_status": "verified"
  },
  "required": [
    "email"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when created"
    },
    "name": {
      "type": "string",
      "description": "The name for the address"
    },
    "email": {
      "type": "string",
      "description": "The email address. You can't change the email address of an existing support address."
    },
    "default": {
      "type": "boolean",
      "description": "Whether the address is the account's default support address"
    },
    "brand_id": {
      "type": "integer",
      "description": "The ID of the [brand](https://developer.zendesk.com)"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the address was created"
    },
    "spf_status": {
      "enum": [
        "unknown",
        "verified",
        "failed"
      ],
      "type": "string",
      "readOnly": true,
      "description": "Whether the SPF record is set up correctly. Possible values: \"unknown\", \"verified\", \"failed\""
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the address was updated"
    },
    "dns_results": {
      "enum": [
        "verified",
        "failed"
      ],
      "type": "string",
      "readOnly": true,
      "description": "Verification statuses for the domain and CNAME records. Possible types: \"verified\", \"failed\""
    },
    "cname_status": {
      "enum": [
        "unknown",
        "verified",
        "failed"
      ],
      "type": "string",
      "readOnly": true,
      "description": "Whether all of the required CNAME records are set. Possible values: \"unknown\", \"verified\", \"failed\""
    },
    "forwarding_status": {
      "enum": [
        "unknown",
        "waiting",
        "verified",
        "failed"
      ],
      "type": "string",
      "readOnly": true,
      "description": "Status of email forwarding. Possible values: \"unknown\", \"waiting\", \"verified\", or \"failed\""
    },
    "domain_verification_code": {
      "type": "string",
      "readOnly": true,
      "description": "Verification string to be added as a TXT record to the domain. Possible types: string or null."
    },
    "domain_verification_status": {
      "enum": [
        "unknown",
        "verified",
        "failed"
      ],
      "type": "string",
      "readOnly": true,
      "description": "Whether the domain verification record is valid. Possible values: \"unknown\", \"verified\", \"failed\""
    }
  }
}
object SupportAddressResponse
{
  "type": "object",
  "properties": {
    "recipient_address": {
      "$ref": "#/components/schemas/SupportAddressObject"
    }
  }
}
object SupportAddressesResponse
{
  "type": "object",
  "properties": {
    "recipient_addresses": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SupportAddressObject"
      }
    }
  }
}
string SupportAddressesVerifyForwardingResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object SuspendedTicketObject
{
  "type": "object",
  "example": {
    "id": 435,
    "url": "https://example.zendesk.com/api/v2/tickets/35436.json",
    "via": {
      "source": {
        "to": {
          "name": "Example Account",
          "address": "support@example.zendesk.com"
        },
        "rel": null,
        "from": {
          "name": "TotallyLegit",
          "address": "totallylegit@emailaddress.com"
        }
      },
      "channel": "email"
    },
    "cause": "Detected as spam",
    "author": {
      "id": 1111,
      "name": "Mr. Roboto",
      "email": "styx@example.com"
    },
    "content": "Out Of Office Reply",
    "subject": "Help, my printer is on fire!",
    "brand_id": 123,
    "cause_id": 0,
    "recipient": "john@example.com",
    "ticket_id": 67321,
    "created_at": "2009-07-20T22:55:29Z",
    "message_id": "Spambot@spam.co.evil",
    "updated_at": "2011-05-05T10:38:52Z",
    "attachments": [],
    "error_messages": null
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of this ticket"
    },
    "via": {
      "$ref": "#/components/schemas/ViaObject"
    },
    "cause": {
      "type": "string",
      "readOnly": true,
      "description": "Why the ticket was suspended"
    },
    "author": {
      "$ref": "#/components/schemas/AuthorObject"
    },
    "content": {
      "type": "string",
      "readOnly": true,
      "description": "The content that was flagged"
    },
    "subject": {
      "type": "string",
      "readOnly": true,
      "description": "The value of the subject field for this ticket"
    },
    "brand_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of the brand this ticket is associated with. Only applicable for Enterprise accounts"
    },
    "cause_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The ID of the cause"
    },
    "recipient": {
      "type": "string",
      "readOnly": true,
      "description": "The original recipient e-mail address of the ticket"
    },
    "ticket_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The ticket ID this suspended email is associated with, if available"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The ticket ID this suspended email is associated with, if available"
    },
    "message_id": {
      "type": "string",
      "readOnly": true,
      "description": "The ID of the email, if available"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the ticket was assigned"
    },
    "attachments": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AttachmentObject"
      },
      "nullable": true,
      "readOnly": true,
      "description": "The attachments, if any associated to this suspended ticket. See [Attachments](https://developer.zendesk.com)"
    },
    "error_messages": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "nullable": true,
      "readOnly": true,
      "description": "The error messages if any associated to this suspended ticket"
    }
  },
  "x-konfig-properties": {
    "author": {
      "type": "object",
      "readOnly": true,
      "description": "The author id (if available), name and email"
    }
  }
}
object SuspendedTicketResponse
{
  "type": "object",
  "properties": {
    "suspended_ticket": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SuspendedTicketObject"
      }
    }
  }
}
object SuspendedTicketsAttachmentsResponse
{
  "type": "object",
  "properties": {
    "upload": {
      "type": "object",
      "properties": {
        "token": {
          "type": "string",
          "readOnly": true,
          "description": "Token for subsequent request"
        },
        "attachments": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/AttachmentObject"
          }
        }
      }
    }
  }
}
object SuspendedTicketsExportResponse
{
  "type": "object",
  "properties": {
    "export": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "readOnly": true
        },
        "view_id": {
          "type": "string",
          "readOnly": true
        }
      }
    }
  }
}
object SuspendedTicketsResponse
{
  "type": "object",
  "properties": {
    "suspended_tickets": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SuspendedTicketObject"
      }
    }
  }
}
object SystemFieldOptionObject
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "readOnly": true,
      "description": "Name of the system field option"
    },
    "value": {
      "type": "string",
      "readOnly": true,
      "description": "Value of the system field option"
    }
  }
}
object TagCountObject
{
  "type": "object",
  "properties": {
    "value": {
      "type": "integer",
      "readOnly": true,
      "description": "The count of tags created in the last 24 hours"
    },
    "refreshed_at": {
      "type": "string",
      "readOnly": true,
      "description": "The time that the count value was last refreshed"
    }
  }
}
object TagCountResponse
{
  "type": "object",
  "properties": {
    "count": {
      "$ref": "#/components/schemas/TagCountObject"
    }
  }
}
object TagListTagObject
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "A name for the tag"
    },
    "count": {
      "type": "integer",
      "readOnly": true,
      "description": "The number of tags"
    }
  }
}
object TagUrlObject
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The url associated to the api request"
    }
  }
}
object TagsByObjectIdResponse
{
  "type": "object",
  "required": [
    "tags"
  ],
  "properties": {
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "An array of strings"
    }
  }
}
object TagsResponse
{
  "type": "object",
  "properties": {
    "tags": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TagListTagObject"
      }
    },
    "count": {
      "type": "integer",
      "readOnly": true,
      "description": "The number of pages"
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "The url of the previous page"
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "The url of the next page"
    }
  }
}
object TargetBasecamp
{
  "type": "object",
  "required": [
    "target_url",
    "token",
    "project_id",
    "resource"
  ],
  "properties": {
    "token": {
      "type": "string",
      "description": "Get the API token from My info > Show your tokens > Token for feed readers or the Basecamp API in your Basecamp account"
    },
    "password": {
      "type": "string",
      "description": "The 37Signals password for the Basecamp account (only writable)"
    },
    "resource": {
      "type": "string",
      "description": "\"todo\" or \"message\""
    },
    "username": {
      "type": "string",
      "description": "The 37Signals username of the account you use to log in to Basecamp"
    },
    "message_id": {
      "type": "string",
      "description": "Can be filled if it is a \"message\" resource"
    },
    "project_id": {
      "type": "string",
      "description": "The ID of the project in Basecamp where updates should be pushed"
    },
    "target_url": {
      "type": "string",
      "description": "The URL of your Basecamp account, including protocol and path"
    },
    "todo_list_id": {
      "type": "string",
      "description": "Can be filled if it is a \"todo\" resource"
    }
  }
}
object TargetCampfire
{
  "type": "object",
  "required": [
    "subdomain",
    "room",
    "token"
  ],
  "properties": {
    "ssl": {
      "type": "boolean"
    },
    "room": {
      "type": "string"
    },
    "token": {
      "type": "string"
    },
    "subdomain": {
      "type": "string"
    },
    "preserve_format": {
      "type": "boolean"
    }
  }
}
object TargetClickatell
{
  "type": "object",
  "required": [
    "username",
    "password",
    "api_id",
    "to"
  ],
  "properties": {
    "to": {
      "type": "string"
    },
    "from": {
      "type": "string"
    },
    "api_id": {
      "type": "string"
    },
    "method": {
      "type": "string",
      "description": "Read-only"
    },
    "password": {
      "type": "string",
      "description": "only writable"
    },
    "username": {
      "type": "string"
    },
    "attribute": {
      "type": "string",
      "description": "Read-only"
    },
    "target_url": {
      "type": "string",
      "description": "Read-only"
    },
    "us_small_business_account": {
      "type": "string"
    }
  }
}
object TargetCommonFields
{
  "type": "object",
  "required": [
    "title",
    "type"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when created"
    },
    "type": {
      "type": "string",
      "description": "A pre-defined target, such as \"basecamp_target\". See the additional attributes for the type that follow"
    },
    "title": {
      "type": "string",
      "description": "A name for the target"
    },
    "active": {
      "type": "boolean",
      "description": "Whether or not the target is activated"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the target was created"
    }
  }
}
object TargetEmail
{
  "type": "object",
  "required": [
    "email",
    "subject"
  ],
  "properties": {
    "email": {
      "type": "string"
    },
    "subject": {
      "type": "string"
    }
  }
}
object TargetFailureObject
{
  "type": "object",
  "example": {
    "id": 6001326,
    "url": "https://example.zendesk.com/api/v2/target_failures/6001326.json",
    "created_at": "2017-09-05T10:38:52Z",
    "raw_request": "GET /api/v2/tickets.json HTTP/1.1\r\nUser-Agent: Zendesk Target\r\n ...",
    "status_code": 401,
    "target_name": "My URL Target",
    "raw_response": "HTTP/1.1 401 Unauthorized\r\nServer: nginx\r\n ...",
    "consecutive_failure_count": 1
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "The ID of the target failure"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of the failure record"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Time of the failure"
    },
    "raw_request": {
      "type": "string",
      "readOnly": true,
      "description": "The raw message of the target request"
    },
    "status_code": {
      "type": "integer",
      "readOnly": true,
      "description": "HTTP status code of the target failure"
    },
    "target_name": {
      "type": "string",
      "readOnly": true,
      "description": "Name of the target failure"
    },
    "raw_response": {
      "type": "string",
      "readOnly": true,
      "description": "The raw response of the failure"
    },
    "consecutive_failure_count": {
      "type": "integer",
      "readOnly": true,
      "description": "Number of times the target failed consecutively"
    }
  }
}
object TargetFailureResponse
{
  "type": "object",
  "properties": {
    "target_failure": {
      "$ref": "#/components/schemas/TargetFailureObject"
    }
  }
}
object TargetFailuresResponse
{
  "type": "object",
  "properties": {
    "target_failures": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TargetFailureObject"
      }
    }
  }
}
object TargetFlowdock
{
  "type": "object",
  "required": [
    "api_token"
  ],
  "properties": {
    "api_token": {
      "type": "string"
    }
  }
}
object TargetGetSatisfaction
{
  "type": "object",
  "required": [
    "email",
    "password",
    "account_name"
  ],
  "properties": {
    "email": {
      "type": "string"
    },
    "password": {
      "type": "string",
      "description": "only writable"
    },
    "target_url": {
      "type": "string"
    },
    "account_name": {
      "type": "string"
    }
  }
}
object TargetHTTP
{
  "type": "object",
  "required": [
    "target_url",
    "method",
    "content_type"
  ],
  "properties": {
    "method": {
      "type": "string",
      "description": "\"get\", \"patch\", \"put\", \"post\", or \"delete\""
    },
    "password": {
      "type": "string",
      "description": "only writable"
    },
    "username": {
      "type": "string"
    },
    "target_url": {
      "type": "string"
    },
    "content_type": {
      "type": "string",
      "description": "\"application/json\", \"application/xml\", or \"application/x-www-form-urlencoded\""
    }
  }
}
object TargetJira
{
  "type": "object",
  "required": [
    "target_url",
    "username",
    "password"
  ],
  "properties": {
    "password": {
      "type": "string",
      "description": "only writable"
    },
    "username": {
      "type": "string"
    },
    "target_url": {
      "type": "string"
    }
  }
}
object TargetObject
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/TargetCommonFields"
    },
    {
      "anyOf": [
        {
          "$ref": "#/components/schemas/TargetBasecamp"
        },
        {
          "$ref": "#/components/schemas/TargetCampfire"
        },
        {
          "$ref": "#/components/schemas/TargetClickatell"
        },
        {
          "$ref": "#/components/schemas/TargetEmail"
        },
        {
          "$ref": "#/components/schemas/TargetFlowdock"
        },
        {
          "$ref": "#/components/schemas/TargetGetSatisfaction"
        },
        {
          "$ref": "#/components/schemas/TargetJira"
        },
        {
          "$ref": "#/components/schemas/TargetPivotal"
        },
        {
          "$ref": "#/components/schemas/TargetTwitter"
        },
        {
          "$ref": "#/components/schemas/TargetURL"
        },
        {
          "$ref": "#/components/schemas/TargetHTTP"
        },
        {
          "$ref": "#/components/schemas/TargetYammer"
        }
      ]
    }
  ],
  "example": {
    "id": 88335,
    "url": "https://company.zendesk.com/api/v2/targets/88335.json",
    "type": "basecamp_target",
    "title": "basecamp target",
    "active": false,
    "created_at": "2012-02-20T22:55:29Z"
  },
  "additionalProperties": true
}
object TargetPivotal
{
  "type": "object",
  "required": [
    "token",
    "project_id",
    "story_type",
    "story_title"
  ],
  "properties": {
    "token": {
      "type": "string"
    },
    "owner_by": {
      "type": "string"
    },
    "project_id": {
      "type": "string"
    },
    "story_type": {
      "type": "string"
    },
    "story_title": {
      "type": "string"
    },
    "requested_by": {
      "type": "string"
    },
    "story_labels": {
      "type": "string"
    }
  }
}
object TargetResponse
{
  "type": "object",
  "properties": {
    "target": {
      "$ref": "#/components/schemas/TargetObject"
    }
  }
}
object TargetTwitter
{
  "type": "object",
  "properties": {
    "token": {
      "type": "string"
    },
    "secret": {
      "type": "string",
      "description": "only writable"
    }
  }
}
object TargetURL
{
  "type": "object",
  "required": [
    "target_url",
    "attribute"
  ],
  "properties": {
    "method": {
      "type": "string",
      "description": "\"get\""
    },
    "password": {
      "type": "string",
      "description": "only writable"
    },
    "username": {
      "type": "string"
    },
    "attribute": {
      "type": "string"
    },
    "target_url": {
      "type": "string"
    }
  }
}
object TargetYammer
{
  "type": "object",
  "properties": {
    "token": {
      "type": "string"
    },
    "group_id": {
      "type": "string"
    }
  }
}
object TargetsResponse
{
  "type": "object",
  "properties": {
    "targets": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TargetObject"
      }
    }
  }
}
object TicketAuditObject
{
  "type": "object",
  "example": {
    "id": 35436,
    "via": {
      "channel": "web"
    },
    "events": [
      {
        "id": 1564245,
        "body": "Thanks for your help!",
        "type": "Comment",
        "public": true,
        "attachments": []
      },
      {
        "id": 1564246,
        "body": "Ticket #47 has been updated",
        "type": "Notification",
        "subject": "Your ticket has been updated"
      }
    ],
    "metadata": {
      "custom": {
        "time_spent": "3m22s"
      },
      "system": {
        "ip_address": "184.106.40.75"
      }
    },
    "author_id": 35436,
    "ticket_id": 47,
    "created_at": "2009-07-20T22:55:29Z"
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when creating audits"
    },
    "via": {
      "$ref": "#/components/schemas/TicketAuditViaObject"
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "description": "An array of the events that happened in this audit. See the [Ticket Audit events reference](https://developer.zendesk.com)"
    },
    "metadata": {
      "type": "object",
      "readOnly": true,
      "description": "Metadata for the audit, custom and system data",
      "additionalProperties": true
    },
    "author_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The user who created the audit"
    },
    "ticket_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The ID of the associated ticket"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the audit was created"
    }
  }
}
object TicketAuditResponse
{
  "type": "object",
  "properties": {
    "audit": {
      "$ref": "#/components/schemas/TicketAuditObject"
    }
  }
}
object TicketAuditViaObject
{
  "type": "object",
  "properties": {
    "source": {
      "type": "object",
      "readOnly": true,
      "description": "For some channels a source object gives more information about how or why the ticket or event was created",
      "additionalProperties": true
    },
    "channel": {
      "type": "string",
      "readOnly": true,
      "description": "This tells you how the ticket or event was created. Examples: \"web\", \"mobile\", \"rule\", \"system\""
    }
  },
  "description": "Describes how the object was created. See the [Via object reference](https://developer.zendesk.com)"
}
string TicketAuditsConvertToPrivateResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object TicketAuditsCountResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer"
        },
        "refreshed_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    }
  }
}
object TicketAuditsResponse
{
  "type": "object",
  "properties": {
    "audits": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketAuditObject"
      }
    },
    "after_url": {
      "type": "string",
      "readOnly": true
    },
    "before_url": {
      "type": "string",
      "readOnly": true
    },
    "after_cursor": {
      "type": "string",
      "readOnly": true
    },
    "before_cursor": {
      "type": "string",
      "readOnly": true
    }
  }
}
object TicketAuditsResponseNoneCursor
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true
    },
    "audits": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketAuditObject"
      }
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    }
  }
}
object TicketBulkImportRequest
{
  "type": "object",
  "properties": {
    "tickets": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketImportInput"
      }
    }
  }
}
object TicketChatCommentRedactionResponse
{
  "type": "object",
  "example": {
    "chat_event": {
      "id": 1932802680168,
      "type": "ChatStartedEvent",
      "value": {
        "chat_id": "2109.10502823.Sjuj2YrBpXwei",
        "history": [
          {
            "type": "ChatJoin",
            "actor_id": 1900448983828,
            "timestamp": 1632470783218,
            "actor_name": "Visitor 36044085",
            "actor_type": "end-user",
            "chat_index": 0
          }
        ],
        "visitor_id": "10502823-16EkM3T6VNq7KMd"
      }
    }
  },
  "properties": {
    "chat_event": {
      "type": "object",
      "readOnly": true,
      "properties": {
        "id": {
          "type": "integer",
          "readOnly": true,
          "description": "Id assigned to the chat event object"
        },
        "type": {
          "type": "string",
          "readOnly": true,
          "description": "Type of chat event"
        },
        "value": {
          "type": "object",
          "readOnly": true,
          "properties": {
            "chat_id": {
              "type": "string",
              "readOnly": true,
              "description": "Id of the chat session"
            },
            "history": {
              "type": "array",
              "items": {
                "type": "object",
                "additionalProperties": true
              },
              "description": "Chat events within the chat session"
            },
            "visitor_id": {
              "type": "string",
              "readOnly": true,
              "description": "Id assigned to the visitor"
            }
          },
          "description": "The value of the chat event object"
        }
      },
      "description": "Chat event object"
    }
  }
}
object TicketCommentObject
{
  "type": "object",
  "example": {
    "id": 1274,
    "body": "Thanks for your help!",
    "type": "Comment",
    "public": true,
    "metadata": {
      "via": {
        "source": {
          "to": {},
          "rel": "web_widget",
          "from": {}
        },
        "channel": "web"
      },
      "system": {
        "client": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
        "latitude": -37.000000000001,
        "location": "Melbourne, 07, Australia",
        "longitude": 144.0000000000002,
        "ip_address": "1.1.1.1"
      }
    },
    "author_id": 123123,
    "created_at": "2009-07-20T22:55:29Z",
    "attachments": [
      {
        "id": 498483,
        "size": 2532,
        "file_name": "crash.log",
        "thumbnails": [],
        "content_url": "https://company.zendesk.com/attachments/crash.log",
        "content_type": "text/plain"
      }
    ]
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when the comment is created"
    },
    "via": {
      "$ref": "#/components/schemas/TicketAuditViaObject"
    },
    "body": {
      "type": "string",
      "description": "The comment string. See [Bodies](https://developer.zendesk.com)"
    },
    "type": {
      "type": "string",
      "readOnly": true,
      "description": "`Comment` or `VoiceComment`. The JSON object for adding voice comments to tickets is different. See [Adding voice comments to tickets](https://developer.zendesk.com)"
    },
    "public": {
      "type": "boolean",
      "description": "true if a public comment; false if an internal note. The initial value set on ticket creation persists for any additional comment unless you change it"
    },
    "uploads": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of tokens received from [uploading files](/api-reference/ticketing/tickets/ticket-attachments/#upload-files) for comment attachments. The files are attached by creating or updating tickets with the tokens. See [Attaching files](/api-reference/ticketing/tickets/tickets/#attaching-files) in Tickets"
    },
    "audit_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of the ticket audit record. See [Show Audit](/api-reference/ticketing/tickets/ticket_audits/#show-audit)"
    },
    "metadata": {
      "type": "object",
      "readOnly": true,
      "description": "System information (web client, IP address, etc.) and comment flags, if any. See [Comment flags](https://developer.zendesk.com)",
      "additionalProperties": true
    },
    "author_id": {
      "type": "integer",
      "description": "The id of the comment author. See [Author id](https://developer.zendesk.com)"
    },
    "html_body": {
      "type": "string",
      "description": "The comment formatted as HTML. See [Bodies](https://developer.zendesk.com)"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the comment was created"
    },
    "plain_body": {
      "type": "string",
      "readOnly": true,
      "description": "The comment presented as plain text. See [Bodies](https://developer.zendesk.com)"
    },
    "attachments": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AttachmentObject"
      },
      "readOnly": true,
      "description": "Attachments, if any. See [Attachment](https://developer.zendesk.com)"
    }
  }
}
object TicketCommentResponse
{
  "type": "object",
  "properties": {
    "comment": {
      "$ref": "#/components/schemas/TicketCommentObject"
    }
  }
}
object TicketCommentsCountResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer"
        },
        "refreshed_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    }
  }
}
string TicketCommentsMakePrivateResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object TicketCommentsResponse
{
  "type": "object",
  "properties": {
    "comments": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketCommentObject"
      }
    }
  }
}
object TicketCreateInput
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/TicketUpdateInput"
    },
    {
      "type": "object",
      "required": [
        "comment"
      ],
      "properties": {
        "via": {
          "$ref": "#/components/schemas/ViaObject"
        },
        "brand_id": {
          "type": "integer",
          "description": "Enterprise only. The id of the brand this ticket is associated with"
        },
        "macro_ids": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "POST requests only. List of macro IDs to be recorded in the ticket audit"
        },
        "recipient": {
          "type": "string",
          "description": "The original recipient e-mail address of the ticket"
        },
        "raw_subject": {
          "type": "string",
          "description": "The dynamic content placeholder, if present, or the \"subject\" value, if not. See [Dynamic Content Items](https://developer.zendesk.com)\n"
        },
        "email_cc_ids": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The ids of agents or end users currently CC'ed on the ticket. See [CCs and followers resources](https://support.zendesk.com/hc/en-us/articles/360020585233) in the Support Help Center"
        },
        "follower_ids": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "The ids of agents currently following the ticket. See [CCs and followers resources](https://support.zendesk.com/hc/en-us/articles/360020585233)"
        },
        "submitter_id": {
          "type": "integer",
          "description": "The user who submitted the ticket. The submitter always becomes the author of the first comment on the ticket"
        },
        "collaborators": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/CollaboratorObject"
          },
          "description": "POST requests only. Users to add as cc's when creating a ticket. See [Setting Collaborators](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-collaborators)"
        },
        "ticket_form_id": {
          "type": "integer",
          "description": "Enterprise only. The id of the ticket form to render for the ticket"
        },
        "via_followup_source_id": {
          "type": "integer",
          "description": "POST requests only. The id of a closed ticket when creating a follow-up ticket. See [Creating a follow-up ticket](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#creating-a-follow-up-ticket)"
        }
      }
    }
  ],
  "example": {
    "comment": {
      "body": "The smoke is very colorful."
    },
    "subject": "My printer is on fire!",
    "priority": "urgent"
  }
}
object TicketCreateRequest
{
  "type": "object",
  "properties": {
    "ticket": {
      "$ref": "#/components/schemas/TicketCreateInput"
    }
  }
}
object TicketCreateVoicemailTicketInput
{
  "type": "object",
  "properties": {
    "via_id": {
      "enum": [
        44,
        45,
        46
      ],
      "type": "integer",
      "description": "Required for Create Ticket operation"
    },
    "comment": {
      "$ref": "#/components/schemas/TicketCommentObject"
    },
    "priority": {
      "enum": [
        "urgent",
        "high",
        "normal",
        "low"
      ],
      "type": "string",
      "description": "The urgency with which the ticket should be addressed."
    },
    "voice_comment": {
      "$ref": "#/components/schemas/TicketCreateVoicemailTicketVoiceCommentInput"
    }
  },
  "x-konfig-properties": {
    "voice_comment": {
      "type": "object",
      "description": "Required if creating voicemail ticket"
    }
  }
}
object TicketCreateVoicemailTicketRequest
{
  "type": "object",
  "properties": {
    "ticket": {
      "$ref": "#/components/schemas/TicketCreateVoicemailTicketInput"
    },
    "display_to_agent": {
      "type": "integer",
      "description": "Optional value such as the ID of the agent that will see the newly created ticket."
    }
  },
  "x-konfig-properties": {
    "ticket": {
      "type": "object",
      "description": "Ticket object that lists the values to set when the ticket is created"
    }
  }
}
object TicketCreateVoicemailTicketVoiceCommentInput
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "description": "Dialed phone number"
    },
    "from": {
      "type": "string",
      "description": "Incoming phone number"
    },
    "location": {
      "type": "string",
      "description": "Location of the caller (optional)"
    },
    "started_at": {
      "type": "string",
      "format": "date-time",
      "description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp of the call starting time"
    },
    "call_duration": {
      "type": "integer",
      "description": "Duration in seconds of the call"
    },
    "recording_url": {
      "type": "string",
      "description": "Incoming phone number"
    },
    "answered_by_id": {
      "type": "integer",
      "description": "The agent who answered the call"
    },
    "transcription_text": {
      "type": "string",
      "description": "Transcription of the call (optional)"
    }
  }
}
object TicketFieldCountResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer"
        },
        "refreshed_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    }
  }
}
object TicketFieldCustomStatusObject
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when the custom ticket status is created"
    },
    "active": {
      "type": "boolean",
      "description": "If true, if the custom status is set to active. If false, the custom status is set to inactive"
    },
    "default": {
      "type": "boolean",
      "description": "If true, the custom status is set to default. If false, the custom status is set to non-default"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The date and time at which the custom ticket status was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The date and time at which the custom ticket status was last updated"
    },
    "agent_label": {
      "type": "string",
      "description": "The label displayed to agents"
    },
    "description": {
      "type": "string",
      "description": "The description of when the user should select this custom ticket status"
    },
    "end_user_label": {
      "type": "string",
      "description": "The label displayed to end users"
    },
    "status_category": {
      "enum": [
        "new",
        "open",
        "pending",
        "hold",
        "solved"
      ],
      "type": "string",
      "description": "The status category the custom ticket status belongs to"
    },
    "end_user_description": {
      "type": "string",
      "description": "The description displayed to end users"
    }
  }
}
object TicketFieldObject
{
  "type": "object",
  "example": {
    "id": 34,
    "tag": null,
    "url": "https://company.zendesk.com/api/v2/ticket_fields/34.json",
    "type": "subject",
    "title": "Subject",
    "active": true,
    "position": 21,
    "required": true,
    "raw_title": "{{dc.my_title}}",
    "removable": false,
    "created_at": "2009-07-20T22:55:29Z",
    "updated_at": "2011-05-05T10:38:52Z",
    "description": "This is the subject field of a ticket",
    "raw_description": "This is the subject field of a ticket",
    "title_in_portal": "Subject",
    "agent_description": "This is the agent only description for the subject field",
    "visible_in_portal": true,
    "editable_in_portal": true,
    "required_in_portal": true,
    "raw_title_in_portal": "{{dc.my_title_in_portal}}",
    "collapsed_for_agents": false,
    "regexp_for_validation": null
  },
  "required": [
    "type",
    "title"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when created"
    },
    "tag": {
      "type": "string",
      "nullable": true,
      "description": "For \"checkbox\" fields only. A tag added to tickets when the checkbox field is selected"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The URL for this resource"
    },
    "type": {
      "type": "string",
      "description": "System or custom field type. Editable for custom field types and only on creation. See [Create Ticket Field](https://developer.zendesk.com)"
    },
    "title": {
      "type": "string",
      "description": "The title of the ticket field"
    },
    "active": {
      "type": "boolean",
      "description": "Whether this field is available"
    },
    "position": {
      "type": "integer",
      "description": "The relative position of the ticket field on a ticket. Note that for accounts with ticket forms, positions are controlled by the different forms"
    },
    "required": {
      "type": "boolean",
      "description": "If true, agents must enter a value in the field to change the ticket status to solved"
    },
    "raw_title": {
      "type": "string",
      "description": "The dynamic content placeholder if present, or the `title` value if not. See [Dynamic Content](https://developer.zendesk.com)"
    },
    "removable": {
      "type": "boolean",
      "readOnly": true,
      "description": "If false, this field is a system field that must be present on all tickets"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the custom ticket field was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the custom ticket field was last updated"
    },
    "description": {
      "type": "string",
      "description": "Describes the purpose of the ticket field to users"
    },
    "sub_type_id": {
      "type": "integer",
      "description": "For system ticket fields of type \"priority\" and \"status\". Defaults to 0. A \"priority\" sub type of 1 removes the \"Low\" and \"Urgent\" options. A \"status\" sub type of 1 adds the \"On-Hold\" option"
    },
    "creator_user_id": {
      "type": "integer",
      "description": "The id of the user that created the ticket field, or a value of \"-1\" if an app created the ticket field"
    },
    "custom_statuses": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketFieldCustomStatusObject"
      },
      "readOnly": true,
      "description": "List of customized ticket statuses. Only presented for a system ticket field of type \"custom_status\""
    },
    "raw_description": {
      "type": "string",
      "description": "The dynamic content placeholder if present, or the `description` value if not. See [Dynamic Content](https://developer.zendesk.com)"
    },
    "title_in_portal": {
      "type": "string",
      "description": "The title of the ticket field for end users in Help Center"
    },
    "creator_app_name": {
      "type": "string",
      "description": "Name of the app that created the ticket field, or a null value if no app created the ticket field"
    },
    "agent_description": {
      "type": "string",
      "description": "A description of the ticket field that only agents can see"
    },
    "visible_in_portal": {
      "type": "boolean",
      "description": "Whether this field is visible to end users in Help Center"
    },
    "editable_in_portal": {
      "type": "boolean",
      "description": "Whether this field is editable by end users in Help Center"
    },
    "required_in_portal": {
      "type": "boolean",
      "description": "If true, end users must enter a value in the field to create the request"
    },
    "raw_title_in_portal": {
      "type": "string",
      "description": "The dynamic content placeholder if present, or the \"title_in_portal\" value if not. See [Dynamic Content](https://developer.zendesk.com)"
    },
    "relationship_filter": {
      "type": "object",
      "description": "A filter definition that allows your autocomplete to filter down results"
    },
    "collapsed_for_agents": {
      "type": "boolean",
      "description": "If true, the field is shown to agents by default. If false, the field is hidden alongside infrequently used fields. Classic interface only"
    },
    "custom_field_options": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomFieldOptionObject"
      },
      "description": "Required and presented for a custom ticket field of type \"multiselect\" or \"tagger\""
    },
    "system_field_options": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SystemFieldOptionObject"
      },
      "readOnly": true,
      "description": "Presented for a system ticket field of type \"tickettype\", \"priority\" or \"status\""
    },
    "regexp_for_validation": {
      "type": "string",
      "nullable": true,
      "description": "For \"regexp\" fields only. The validation pattern for a field value to be deemed valid"
    },
    "relationship_target_type": {
      "type": "string",
      "description": "A representation of what type of object the field references. Options are \"zen:user\", \"zen:organization\", \"zen:ticket\", or \"zen:custom_object:{key}\" where key is a custom object key. For example \"zen:custom_object:apartment\"."
    }
  }
}
object TicketFieldResponse
{
  "type": "object",
  "properties": {
    "ticket_field": {
      "$ref": "#/components/schemas/TicketFieldObject"
    }
  }
}
object TicketFieldsResponse
{
  "type": "object",
  "properties": {
    "ticket_fields": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketFieldObject"
      }
    }
  }
}
object TicketFormObject
{
  "type": "object",
  "example": {
    "id": 47,
    "url": "https://company.zendesk.com/api/v2/ticket_forms/47.json",
    "name": "Snowboard Problem",
    "active": true,
    "default": true,
    "position": 9999,
    "raw_name": "Snowboard Problem",
    "created_at": "2012-04-02T22:55:29Z",
    "updated_at": "2012-04-02T22:55:29Z",
    "display_name": "Snowboard Damage",
    "in_all_brands": false,
    "agent_conditions": [
      {
        "value": "matching_value",
        "child_fields": [
          {
            "id": 101,
            "is_required": false,
            "required_on_statuses": {
              "type": "SOME_STATUSES",
              "statuses": [
                "new",
                "open",
                "pending",
                "hold"
              ]
            }
          },
          {
            "id": 200,
            "is_required": true,
            "required_on_statuses": {
              "type": "SOME_STATUSES",
              "statuses": [
                "solved"
              ]
            }
          }
        ],
        "parent_field_id": 100
      },
      {
        "value": "matching_value_2",
        "child_fields": [
          {
            "id": 102,
            "is_required": true,
            "required_on_statuses": {
              "type": "ALL_STATUSES"
            }
          },
          {
            "id": 200,
            "is_required": false,
            "required_on_statuses": {
              "type": "NO_STATUSES"
            }
          }
        ],
        "parent_field_id": 101
      }
    ],
    "end_user_visible": true,
    "raw_display_name": "{{dc.my_display_name}}",
    "ticket_field_ids": [
      2,
      4,
      5,
      10,
      100,
      101,
      102,
      200
    ],
    "end_user_conditions": [
      {
        "value": "matching_value",
        "child_fields": [
          {
            "id": 101,
            "is_required": true
          }
        ],
        "parent_field_id": 100
      },
      {
        "value": "matching_value",
        "child_fields": [
          {
            "id": 202,
            "is_required": false
          }
        ],
        "parent_field_id": 200
      }
    ],
    "restricted_brand_ids": [
      47,
      33,
      22
    ]
  },
  "required": [
    "name"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when creating ticket form"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "URL of the ticket form"
    },
    "name": {
      "type": "string",
      "description": "The name of the form"
    },
    "active": {
      "type": "boolean",
      "description": "If the form is set as active"
    },
    "default": {
      "type": "boolean",
      "description": "Is the form the default form for this account"
    },
    "position": {
      "type": "integer",
      "description": "The position of this form among other forms in the account, i.e. dropdown"
    },
    "raw_name": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the \"name\" value, if not. See [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the ticket form was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the last update of the ticket form"
    },
    "display_name": {
      "type": "string",
      "description": "The name of the form that is displayed to an end user"
    },
    "in_all_brands": {
      "type": "boolean",
      "description": "Is the form available for use in all brands on this account"
    },
    "agent_conditions": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "description": "Array of condition sets for agent workspaces"
    },
    "end_user_visible": {
      "type": "boolean",
      "description": "Is the form visible to the end user"
    },
    "raw_display_name": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the \"display_name\" value, if not. See [Dynamic Content Items](https://developer.zendesk.com)"
    },
    "ticket_field_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "ids of all ticket fields which are in this ticket form. The products use the order of the ids to show the field values in the tickets"
    },
    "end_user_conditions": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "description": "Array of condition sets for end user products"
    },
    "restricted_brand_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "readOnly": true,
      "description": "ids of all brands that this ticket form is restricted to"
    }
  }
}
object TicketFormResponse
{
  "type": "object",
  "properties": {
    "ticket_form": {
      "$ref": "#/components/schemas/TicketFormObject"
    }
  }
}
object TicketFormsResponse
{
  "type": "object",
  "properties": {
    "ticket_forms": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketFormObject"
      }
    }
  }
}
object TicketImportInput
{
  "type": "object",
  "properties": {
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The array of tags applied to this ticket"
    },
    "subject": {
      "type": "string",
      "description": "The value of the subject field for this ticket"
    },
    "comments": {
      "type": "array",
      "items": {
        "allOf": [
          {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "description": "The comment string value"
              }
            }
          },
          {
            "$ref": "#/components/schemas/TicketCommentObject"
          }
        ]
      },
      "description": "The conversation between requesters, collaborators, and agents",
      "additionalProperties": true
    },
    "assignee_id": {
      "type": "integer",
      "description": "The agent currently assigned to the ticket"
    },
    "description": {
      "type": "string",
      "description": "Read-only first comment on the ticket. When [creating a ticket](https://developer.zendesk.com), use `comment` to set the description. See [Description and first comment](https://developer.zendesk.com)"
    },
    "requester_id": {
      "type": "integer",
      "description": "The user who requested this ticket"
    }
  }
}
object TicketImportRequest
{
  "type": "object",
  "properties": {
    "ticket": {
      "$ref": "#/components/schemas/TicketImportInput"
    }
  }
}
object TicketMergeInput
{
  "type": "object",
  "required": [
    "ids"
  ],
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "Ids of tickets to merge into the target ticket"
    },
    "source_comment": {
      "type": "string",
      "description": "Private comment to add to the source ticket"
    },
    "target_comment": {
      "type": "string",
      "description": "Private comment to add to the target ticket"
    },
    "source_comment_is_public": {
      "type": "boolean",
      "description": "Whether comment in source tickets are public or private"
    },
    "target_comment_is_public": {
      "type": "boolean",
      "description": "Whether comment in target ticket is public or private"
    }
  }
}
object TicketMetricEventBaseObject
{
  "type": "object",
  "title": "Ticket Metric Events",
  "example": {
    "id": 926256957613,
    "time": "2020-10-26T12:53:12Z",
    "type": "measure",
    "metric": "agent_work_time",
    "ticket_id": 155,
    "instance_id": 1
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when the record is created"
    },
    "time": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the event occurred"
    },
    "type": {
      "enum": [
        "activate",
        "pause",
        "fulfill",
        "apply_sla",
        "breach",
        "update_status",
        "measure"
      ],
      "type": "string",
      "readOnly": true,
      "description": "The type of the metric event. See [Ticket metric event types reference](https://developer.zendesk.com)"
    },
    "metric": {
      "enum": [
        "agent_work_time",
        "pausable_update_time",
        "periodic_update_time",
        "reply_time",
        "requester_wait_time",
        "resolution_time"
      ],
      "type": "string",
      "readOnly": true,
      "description": "The metric being tracked"
    },
    "ticket_id": {
      "type": "integer",
      "readOnly": true,
      "description": "Id of the associated ticket"
    },
    "instance_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The instance of the metric associated with the event. See [instance_id](https://developer.zendesk.com)"
    }
  }
}
object TicketMetricEventBreachObject
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/TicketMetricEventBaseObject"
    },
    {
      "type": "object",
      "properties": {
        "deleted": {
          "type": "boolean",
          "readOnly": true,
          "description": "Available if `type` is `breach`. In general, you can ignore any breach event when `deleted` is true. See [deleted](https://developer.zendesk.com)"
        }
      }
    }
  ],
  "title": "Ticket Metric Event"
}
object TicketMetricEventGroupSLAObject
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/TicketMetricEventBaseObject"
    },
    {
      "type": "object",
      "properties": {
        "group_sla": {
          "type": "object",
          "readOnly": true,
          "description": "Available if `type` is \"apply_group_sla\". The Group SLA policy and target being enforced on the ticket and metric in question, if any. See [group_sla](https://developer.zendesk.com)"
        }
      }
    }
  ],
  "title": "Ticket Metric Event"
}
object TicketMetricEventSLAObject
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/TicketMetricEventBaseObject"
    },
    {
      "type": "object",
      "properties": {
        "sla": {
          "type": "object",
          "readOnly": true,
          "description": "Available if `type` is `apply_sla`. The SLA policy and target being enforced on the ticket and metric in question, if any. See [sla](https://developer.zendesk.com)"
        }
      }
    }
  ],
  "title": "Ticket Metric Event"
}
object TicketMetricEventUpdateStatusObject
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/TicketMetricEventBaseObject"
    },
    {
      "type": "object",
      "properties": {
        "status": {
          "type": "object",
          "readOnly": true,
          "description": "Available if `type` is `update_status`. Minutes since the metric has been open. See [status](https://developer.zendesk.com)"
        }
      }
    }
  ],
  "title": "Ticket Metric Event"
}
object TicketMetricEventsResponse
{
  "type": "object",
  "allOf": [
    {
      "type": "object",
      "properties": {
        "ticket_metric_events": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/TicketMetricEventBaseObject"
          }
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer"
        },
        "end_time": {
          "type": "integer"
        },
        "next_page": {
          "type": "string"
        }
      }
    }
  ]
}
object TicketMetricObject
{
  "type": "object",
  "example": {
    "id": 33,
    "reopens": 55,
    "replies": 322,
    "solved_at": "2011-05-09T10:38:52Z",
    "ticket_id": 4343,
    "created_at": "2009-07-20T22:55:29Z",
    "updated_at": "2011-05-05T10:38:52Z",
    "assigned_at": "2011-05-05T10:38:52Z",
    "group_stations": 7,
    "assignee_stations": 1,
    "status_updated_at": "2011-05-04T10:38:52Z",
    "assignee_updated_at": "2011-05-06T10:38:52Z",
    "requester_updated_at": "2011-05-07T10:38:52Z",
    "initially_assigned_at": "2011-05-03T10:38:52Z",
    "reply_time_in_minutes": {
      "business": 737,
      "calendar": 2391
    },
    "reply_time_in_seconds": {
      "calendar": 143460
    },
    "latest_comment_added_at": "2011-05-09T10:38:52Z",
    "on_hold_time_in_minutes": {
      "business": 637,
      "calendar": 2290
    },
    "custom_status_updated_at": "2011-05-09T10:38:52Z",
    "agent_wait_time_in_minutes": {
      "business": 737,
      "calendar": 2391
    },
    "requester_wait_time_in_minutes": {
      "business": 737,
      "calendar": 2391
    },
    "full_resolution_time_in_minutes": {
      "business": 737,
      "calendar": 2391
    },
    "first_resolution_time_in_minutes": {
      "business": 737,
      "calendar": 2391
    }
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when the client is created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of the ticket metric"
    },
    "reopens": {
      "type": "integer",
      "readOnly": true,
      "description": "Total number of times the ticket was reopened"
    },
    "replies": {
      "type": "integer",
      "readOnly": true,
      "description": "The number of public replies added to a ticket by an agent"
    },
    "solved_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the ticket was solved"
    },
    "ticket_id": {
      "type": "integer",
      "readOnly": true,
      "description": "Id of the associated ticket"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the record was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the record was last updated"
    },
    "assigned_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the ticket was assigned"
    },
    "group_stations": {
      "type": "integer",
      "readOnly": true,
      "description": "Number of groups the ticket passed through"
    },
    "assignee_stations": {
      "type": "integer",
      "readOnly": true,
      "description": "Number of assignees the ticket had"
    },
    "status_updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the status of the ticket was last updated"
    },
    "assignee_updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the assignee last updated the ticket"
    },
    "requester_updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the requester last updated the ticket"
    },
    "initially_assigned_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the ticket was initially assigned"
    },
    "reply_time_in_minutes": {
      "$ref": "#/components/schemas/TicketMetricTimeObject"
    },
    "reply_time_in_seconds": {
      "$ref": "#/components/schemas/TicketMetricTimeObject"
    },
    "latest_comment_added_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When the latest comment was added"
    },
    "on_hold_time_in_minutes": {
      "$ref": "#/components/schemas/TicketMetricTimeObject"
    },
    "custom_status_updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The date and time the ticket's custom status was last updated"
    },
    "agent_wait_time_in_minutes": {
      "$ref": "#/components/schemas/TicketMetricTimeObject"
    },
    "requester_wait_time_in_minutes": {
      "$ref": "#/components/schemas/TicketMetricTimeObject"
    },
    "full_resolution_time_in_minutes": {
      "$ref": "#/components/schemas/TicketMetricTimeObject"
    },
    "first_resolution_time_in_minutes": {
      "$ref": "#/components/schemas/TicketMetricTimeObject"
    }
  },
  "x-konfig-properties": {
    "reply_time_in_minutes": {
      "type": "object",
      "readOnly": true,
      "description": "Number of minutes to the first reply during calendar and business hours"
    },
    "reply_time_in_seconds": {
      "type": "object",
      "readOnly": true,
      "description": "Number of seconds to the first reply during calendar hours, only available for Messaging tickets"
    },
    "on_hold_time_in_minutes": {
      "type": "object",
      "readOnly": true,
      "description": "Number of minutes on hold"
    },
    "agent_wait_time_in_minutes": {
      "type": "object",
      "readOnly": true,
      "description": "Number of minutes the agent spent waiting during calendar and business hours"
    },
    "requester_wait_time_in_minutes": {
      "type": "object",
      "readOnly": true,
      "description": "Number of minutes the requester spent waiting during calendar and business hours"
    },
    "full_resolution_time_in_minutes": {
      "type": "object",
      "readOnly": true,
      "description": "Number of minutes to the full resolution during calendar and business hours"
    },
    "first_resolution_time_in_minutes": {
      "type": "object",
      "readOnly": true,
      "description": "Number of minutes to the first resolution time during calendar and business hours"
    }
  }
}
object TicketMetricTimeObject
{
  "type": "object",
  "properties": {
    "business": {
      "type": "integer",
      "readOnly": true,
      "description": "Time in business hours"
    },
    "calendar": {
      "type": "integer",
      "readOnly": true,
      "description": "Time in calendar hours"
    }
  }
}
object TicketMetricsByTicketMetricIdResponse
{
  "type": "object",
  "properties": {
    "ticket_metric": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketMetricObject"
      }
    }
  }
}
object TicketMetricsResponse
{
  "type": "object",
  "properties": {
    "ticket_metrics": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketMetricObject"
      }
    }
  }
}
object TicketObject
{
  "type": "object",
  "example": {
    "id": 35436,
    "url": "https://company.zendesk.com/api/v2/tickets/35436.json",
    "via": {
      "channel": "web"
    },
    "tags": [
      "enterprise",
      "other_tag"
    ],
    "type": "incident",
    "due_at": null,
    "status": "open",
    "subject": "Help, my printer is on fire!",
    "group_id": 98738,
    "priority": "high",
    "recipient": "support@company.com",
    "created_at": "2009-07-20T22:55:29Z",
    "problem_id": 9873764,
    "updated_at": "2011-05-05T10:38:52Z",
    "assignee_id": 235323,
    "description": "The fire is very colorful.",
    "external_id": "ahg35h3jh",
    "raw_subject": "{{dc.printer_on_fire}}",
    "follower_ids": [
      35334,
      234
    ],
    "requester_id": 20978392,
    "submitter_id": 76872,
    "custom_fields": [
      {
        "id": 27642,
        "value": "745"
      },
      {
        "id": 27648,
        "value": "yes"
      }
    ],
    "has_incidents": false,
    "organization_id": 509974,
    "collaborator_ids": [
      35334,
      234
    ],
    "custom_status_id": 123,
    "satisfaction_rating": {
      "id": 1234,
      "score": "good",
      "comment": "Great support!"
    },
    "sharing_agreement_ids": [
      84432
    ],
    "from_messaging_channel": false
  },
  "required": [
    "requester_id"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when the ticket is created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of this ticket"
    },
    "via": {
      "type": "object",
      "properties": {
        "source": {
          "type": "object",
          "description": "For some channels a source object gives more information about how or why the ticket or event was created\n",
          "additionalProperties": true
        },
        "channel": {
          "type": "string",
          "description": "This tells you how the ticket or event was created. Examples: \"web\", \"mobile\", \"rule\", \"system\"\n"
        }
      },
      "description": "For more information, see the [Via object reference](https://developer.zendesk.com)"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The array of tags applied to this ticket. Unless otherwise specified, the [set tag](/api-reference/ticketing/ticket-management/tags/#set-tags) behavior is used, which overwrites and replaces existing tags"
    },
    "type": {
      "enum": [
        "problem",
        "incident",
        "question",
        "task"
      ],
      "type": "string",
      "description": "The type of this ticket"
    },
    "due_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "If this is a ticket of type \"task\" it has a due date.  Due date format uses [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format"
    },
    "status": {
      "enum": [
        "new",
        "open",
        "pending",
        "hold",
        "solved",
        "closed"
      ],
      "type": "string",
      "description": "The state of the ticket.\n\nIf your account has activated custom ticket statuses, this is the ticket's\nstatus category. See [custom ticket statuses](https://developer.zendesk.com)\n"
    },
    "via_id": {
      "type": "integer",
      "writeOnly": true,
      "description": "Write only. For more information, see the [Via object reference](https://developer.zendesk.com)"
    },
    "comment": {
      "type": "object",
      "writeOnly": true,
      "description": "Write only. An object that adds a comment to the ticket. See [Ticket comments](https://developer.zendesk.com). To include an attachment with the comment, see [Attaching files](/documentation/ticketing/managing-tickets/creating-and-updating-tickets/#attaching-files)"
    },
    "subject": {
      "type": "string",
      "description": "The value of the subject field for this ticket. See [Subject](/api-reference/ticketing/tickets/tickets/#subject)\n"
    },
    "brand_id": {
      "type": "integer",
      "description": "The id of the brand this ticket is associated with. See [Setting up multiple brands](https://support.zendesk.com/hc/en-us/articles/4408829476378)"
    },
    "group_id": {
      "type": "integer",
      "description": "The group this ticket is assigned to"
    },
    "macro_id": {
      "type": "integer",
      "writeOnly": true,
      "description": "Write only. A macro ID to be recorded in the ticket audit"
    },
    "metadata": {
      "type": "object",
      "writeOnly": true,
      "description": "Write only. Metadata for the audit. In the `audit` object, the data is specified in the `custom` property of the `metadata` object. See [Setting Metadata](/documentation/ticketing/managing-tickets/creating-and-updating-tickets/#setting-metadata)"
    },
    "priority": {
      "enum": [
        "urgent",
        "high",
        "normal",
        "low"
      ],
      "type": "string",
      "description": "The urgency with which the ticket should be addressed"
    },
    "email_ccs": {
      "type": "object",
      "writeOnly": true,
      "description": "Write only. An array of objects that represent agent or end users email CCs to add or delete from the ticket. See [Setting email CCs](/documentation/ticketing/managing-tickets/creating-and-updating-tickets/#setting-email-ccs)"
    },
    "followers": {
      "type": "object",
      "writeOnly": true,
      "description": "Write only. An array of objects that represent agent followers to add or delete from the ticket. See [Setting followers](/documentation/ticketing/managing-tickets/creating-and-updating-tickets/#setting-followers)"
    },
    "is_public": {
      "type": "boolean",
      "readOnly": true,
      "description": "Is true if any comments are public, false otherwise"
    },
    "macro_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "POST requests only. List of macro IDs to be recorded in the ticket audit"
    },
    "recipient": {
      "type": "string",
      "description": "The original recipient e-mail address of the ticket. Notification emails for the ticket are sent from this address"
    },
    "requester": {
      "type": "object",
      "writeOnly": true,
      "description": "Write only. See [Creating a ticket with a new requester](/documentation/ticketing/managing-tickets/creating-and-updating-tickets/#creating-a-ticket-with-a-new-requester)"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When this record was created"
    },
    "problem_id": {
      "type": "integer",
      "description": "For tickets of type \"incident\", the ID of the problem the incident is linked to"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "When this record last got updated. It is updated only if the update generates a [ticket event](https://developer.zendesk.com)"
    },
    "assignee_id": {
      "type": "integer",
      "description": "The agent currently assigned to the ticket"
    },
    "description": {
      "type": "string",
      "readOnly": true,
      "description": "Read-only first comment on the ticket. When [creating a ticket](https://developer.zendesk.com), use `comment` to set the description. See [Description and first comment](https://developer.zendesk.com)\n"
    },
    "external_id": {
      "type": "string",
      "description": "An id you can use to link Zendesk Support tickets to local records"
    },
    "raw_subject": {
      "type": "string",
      "description": "The dynamic content placeholder, if present, or the \"subject\" value, if not. See [Dynamic Content Items](https://developer.zendesk.com)\n"
    },
    "safe_update": {
      "type": "boolean",
      "writeOnly": true,
      "description": "Write only. Optional boolean. When true and an `update_stamp` date is included, protects against ticket update collisions and returns a message to let you know if one occurs. See [Protecting against ticket update collisions](/documentation/ticketing/managing-tickets/creating-and-updating-tickets/#protecting-against-ticket-update-collisions). A value of false has the same effect as true. Omit the property to force the updates to not be safe"
    },
    "email_cc_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "The ids of agents or end users currently CC'ed on the ticket. See [CCs and followers resources](https://support.zendesk.com/hc/en-us/articles/360020585233) in the Support Help Center"
    },
    "follower_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "The ids of agents currently following the ticket. See [CCs and followers resources](https://support.zendesk.com/hc/en-us/articles/360020585233)"
    },
    "followup_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "readOnly": true,
      "description": "The ids of the followups created from this ticket. Ids are only visible once the ticket is closed"
    },
    "requester_id": {
      "type": "integer",
      "description": "The user who requested this ticket"
    },
    "submitter_id": {
      "type": "integer",
      "description": "The user who submitted the ticket. The submitter always becomes the author of the first comment on the ticket"
    },
    "collaborators": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CollaboratorObject"
      },
      "description": "POST requests only. Users to add as cc's when creating a ticket. See [Setting Collaborators](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-collaborators)"
    },
    "custom_fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The id of the custom field"
          },
          "value": {
            "type": "string",
            "description": "The value of the custom field"
          }
        }
      },
      "description": "Custom fields for the ticket. See [Setting custom field values](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-custom-field-values)"
    },
    "has_incidents": {
      "type": "boolean",
      "readOnly": true,
      "description": "Is true if a ticket is a problem type and has one or more incidents linked to it. Otherwise, the value is false."
    },
    "updated_stamp": {
      "type": "string",
      "writeOnly": true,
      "description": "Write only. Datetime of last update received from API. See the `safe_update` property"
    },
    "voice_comment": {
      "type": "object",
      "writeOnly": true,
      "description": "Write only. See [Creating voicemail ticket](/api-reference/voice/talk-partner-edition-api/reference/#creating-voicemail-tickets)"
    },
    "assignee_email": {
      "type": "string",
      "writeOnly": true,
      "description": "Write only. The email address of the agent to assign the ticket to"
    },
    "forum_topic_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The topic in the Zendesk Web portal this ticket originated from, if any. The Web portal is deprecated"
    },
    "ticket_form_id": {
      "type": "integer",
      "description": "Enterprise only. The id of the ticket form to render for the ticket"
    },
    "organization_id": {
      "type": "integer",
      "description": "The organization of the requester. You can only specify the ID of an organization associated with the requester. See [Organization Memberships](https://developer.zendesk.com)"
    },
    "collaborator_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "The ids of users currently CC'ed on the ticket"
    },
    "custom_status_id": {
      "type": "integer",
      "description": "The custom ticket status id of the ticket. See [custom ticket statuses](https://developer.zendesk.com)"
    },
    "allow_attachments": {
      "type": "boolean",
      "readOnly": true,
      "description": "Permission for agents to add add attachments to a comment. Defaults to true"
    },
    "allow_channelback": {
      "type": "boolean",
      "readOnly": true,
      "description": "Is false if channelback is disabled, true otherwise. Only applicable for channels framework ticket"
    },
    "attribute_value_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "writeOnly": true,
      "description": "Write only. An array of the IDs of attribute values to be associated with the ticket"
    },
    "satisfaction_rating": {
      "type": "object",
      "readOnly": true,
      "description": "The satisfaction rating of the ticket, if it exists, or the state of satisfaction, \"offered\" or \"unoffered\". The value is null for plan types that don't support CSAT",
      "additionalProperties": true
    },
    "sharing_agreement_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "readOnly": true,
      "description": "The ids of the sharing agreements used for this ticket"
    },
    "from_messaging_channel": {
      "type": "boolean",
      "readOnly": true,
      "description": "If true, the ticket's [via type](https://developer.zendesk.com) is a messaging channel."
    },
    "via_followup_source_id": {
      "type": "integer",
      "description": "POST requests only. The id of a closed ticket when creating a follow-up ticket. See [Creating a follow-up ticket](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#creating-a-follow-up-ticket)"
    }
  }
}
object TicketRelatedInformation
{
  "type": "object",
  "properties": {
    "twitter": {
      "type": "object",
      "description": "X (formerly Twitter) information associated with the ticket",
      "additionalProperties": true
    },
    "topic_id": {
      "type": "string",
      "nullable": true,
      "description": "Related topic in the Web portal (deprecated feature)"
    },
    "incidents": {
      "type": "integer",
      "description": "A count of related incident occurrences"
    },
    "from_archive": {
      "type": "boolean",
      "description": "Is true if the current ticket is archived"
    },
    "followup_source_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "Sources to follow up"
      }
    }
  }
}
object TicketResponse
{
  "type": "object",
  "properties": {
    "ticket": {
      "$ref": "#/components/schemas/TicketObject"
    }
  }
}
object TicketSkipCreation
{
  "type": "object",
  "properties": {
    "skip": {
      "$ref": "#/components/schemas/TicketSkipObject"
    }
  }
}
object TicketSkipObject
{
  "type": "object",
  "example": {
    "id": 1,
    "reason": "I have no idea.",
    "ticket": {
      "id": 123,
      "url": "https://company.zendesk.com/api/v2/tickets/35436.json",
      "via": {
        "channel": "web"
      },
      "tags": [
        "enterprise",
        "other_tag"
      ],
      "type": "incident",
      "due_at": null,
      "status": "open",
      "subject": "Help, my printer is on fire!",
      "group_id": 98738,
      "priority": "high",
      "recipient": "support@company.com",
      "created_at": "2009-07-20T22:55:29Z",
      "problem_id": 9873764,
      "updated_at": "2011-05-05T10:38:52Z",
      "assignee_id": 235323,
      "description": "The fire is very colorful.",
      "external_id": "ahg35h3jh",
      "raw_subject": "{{dc.printer_on_fire}}",
      "follower_ids": [
        35334,
        234
      ],
      "requester_id": 20978392,
      "submitter_id": 76872,
      "custom_fields": [
        {
          "id": 27642,
          "value": "745"
        },
        {
          "id": 27648,
          "value": "yes"
        }
      ],
      "has_incidents": false,
      "organization_id": 509974,
      "collaborator_ids": [
        35334,
        234
      ],
      "satisfaction_rating": {
        "id": 1234,
        "score": "good",
        "comment": "Great support!"
      },
      "sharing_agreement_ids": [
        84432
      ],
      "from_messaging_channel": false
    },
    "user_id": 456,
    "ticket_id": 123,
    "created_at": "2015-09-30T21:44:03Z",
    "updated_at": "2015-09-30T21:44:03Z"
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned upon creation"
    },
    "reason": {
      "type": "string",
      "readOnly": true,
      "description": "Reason for skipping the ticket"
    },
    "ticket": {
      "$ref": "#/components/schemas/TicketObject"
    },
    "user_id": {
      "type": "integer",
      "readOnly": true,
      "description": "ID of the skipping agent"
    },
    "ticket_id": {
      "type": "integer",
      "readOnly": true,
      "description": "ID of the skipped ticket"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Time the skip was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Time the skip was last updated"
    }
  },
  "x-konfig-properties": {
    "ticket": {
      "type": "object",
      "description": "The skipped ticket. See the [Ticket object reference](/api-reference/ticketing/tickets/tickets/#json-format)"
    }
  }
}
object TicketSkipsResponse
{
  "type": "object",
  "properties": {
    "skips": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketSkipObject"
      }
    }
  }
}
object TicketUpdateInput
{
  "type": "object",
  "example": {
    "comment": {
      "body": "The smoke is very colorful."
    },
    "subject": "My printer is on fire!",
    "priority": "urgent"
  },
  "properties": {
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The array of tags applied to this ticket"
    },
    "type": {
      "enum": [
        "problem",
        "incident",
        "question",
        "task"
      ],
      "type": "string",
      "description": "The type of this ticket."
    },
    "due_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "If this is a ticket of type \"task\" it has a due date.  Due date format uses [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format."
    },
    "status": {
      "enum": [
        "new",
        "open",
        "pending",
        "hold",
        "solved",
        "closed"
      ],
      "type": "string",
      "description": "The state of the ticket.\n\nIf your account has activated custom ticket statuses, this is the ticket's\nstatus category. See [custom ticket statuses](https://developer.zendesk.com).\n"
    },
    "comment": {
      "$ref": "#/components/schemas/TicketCommentObject"
    },
    "subject": {
      "type": "string",
      "description": "The value of the subject field for this ticket"
    },
    "group_id": {
      "type": "integer",
      "description": "The group this ticket is assigned to"
    },
    "priority": {
      "enum": [
        "urgent",
        "high",
        "normal",
        "low"
      ],
      "type": "string",
      "description": "The urgency with which the ticket should be addressed."
    },
    "email_ccs": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EmailCCObject"
      },
      "description": "An array of objects that represent agent or end users email CCs to add or delete from the ticket. See [Setting email CCs](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-email-ccs)"
    },
    "followers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/FollowerObject"
      },
      "description": "An array of objects that represent agent followers to add or delete from the ticket. See [Setting followers](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-followers)"
    },
    "problem_id": {
      "type": "integer",
      "description": "For tickets of type \"incident\", the ID of the problem the incident is linked to"
    },
    "assignee_id": {
      "type": "integer",
      "description": "The agent currently assigned to the ticket"
    },
    "external_id": {
      "type": "string",
      "description": "An id you can use to link Zendesk Support tickets to local records"
    },
    "safe_update": {
      "type": "boolean",
      "description": "Optional boolean. Prevents updates with outdated ticket data (`updated_stamp` property required when true)"
    },
    "requester_id": {
      "type": "integer",
      "description": "The user who requested this ticket"
    },
    "custom_fields": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomFieldObject"
      },
      "description": "Custom fields for the ticket. See [Setting custom field values](/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-custom-field-values)"
    },
    "updated_stamp": {
      "type": "string",
      "format": "date-time",
      "description": "Datetime of last update received from API. See the safe_update property"
    },
    "assignee_email": {
      "type": "string",
      "format": "email",
      "description": "The email address of the agent to assign the ticket to"
    },
    "organization_id": {
      "type": "integer",
      "description": "The organization of the requester. You can only specify the ID of an organization associated with the requester. See [Organization Memberships](https://developer.zendesk.com)"
    },
    "collaborator_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "The ids of users currently CC'ed on the ticket"
    },
    "custom_status_id": {
      "type": "integer",
      "description": "The custom ticket status id of the ticket. See [custom ticket statuses](https://developer.zendesk.com)"
    },
    "attribute_value_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "An array of the IDs of attribute values to be associated with the ticket"
    },
    "sharing_agreement_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "An array of the numeric IDs of sharing agreements. Note that this replaces any existing agreements"
    },
    "additional_collaborators": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CollaboratorObject"
      },
      "description": "An array of numeric IDs, emails, or objects containing name and email properties. See [Setting Collaborators](/api-reference/ticketing/tickets/tickets/#setting-collaborators). An email notification is sent to them when the ticket is updated"
    }
  }
}
object TicketUpdateRequest
{
  "type": "object",
  "properties": {
    "ticket": {
      "$ref": "#/components/schemas/TicketUpdateInput"
    }
  }
}
object TicketUpdateResponse
{
  "type": "object",
  "properties": {
    "audit": {
      "$ref": "#/components/schemas/AuditObject"
    },
    "ticket": {
      "$ref": "#/components/schemas/TicketObject"
    }
  }
}
object TicketsAutocompleteProblemsRequest
{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "The text to search for"
    }
  }
}
object TicketsCountTicketsResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer"
        },
        "refreshed_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    }
  }
}
object TicketsCreateRequest
{
  "type": "object",
  "properties": {
    "tickets": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketCreateInput"
      }
    }
  }
}
string TicketsMarkAsSpamAndSuspendRequesterResponse
{
  "type": "string",
  "example": ""
}
object TicketsResponse
{
  "type": "object",
  "properties": {
    "tickets": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketObject"
      }
    }
  }
}
string TicketsRestoreBulkTicketsResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
string TicketsRestoreTicketResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object TimeBasedExportIncrementalTicketsResponse
{
  "type": "object",
  "example": {
    "count": 2,
    "tickets": [
      {
        "id": 35436,
        "url": "https://company.zendesk.com/api/v2/tickets/35436.json",
        "via": {
          "channel": "web"
        },
        "tags": [
          "enterprise",
          "other_tag"
        ],
        "type": "incident",
        "due_at": null,
        "status": "open",
        "subject": "Help, my printer is on fire!",
        "group_id": 98738,
        "priority": "high",
        "recipient": "support@company.com",
        "created_at": "2009-07-20T22:55:29Z",
        "problem_id": 9873764,
        "updated_at": "2011-05-05T10:38:52Z",
        "assignee_id": 235323,
        "description": "The fire is very colorful.",
        "external_id": "ahg35h3jh",
        "raw_subject": "{{dc.printer_on_fire}}",
        "follower_ids": [
          35334,
          234
        ],
        "requester_id": 20978392,
        "submitter_id": 76872,
        "custom_fields": [
          {
            "id": 27642,
            "value": "745"
          },
          {
            "id": 27648,
            "value": "yes"
          }
        ],
        "has_incidents": false,
        "organization_id": 509974,
        "collaborator_ids": [
          35334,
          234
        ],
        "satisfaction_rating": {
          "id": 1234,
          "score": "good",
          "comment": "Great support!"
        },
        "sharing_agreement_ids": [
          84432
        ]
      }
    ],
    "end_time": 1390362485,
    "next_page": "https://{subdomain}.zendesk.com/api/v2/incremental/tickets.json?per_page=3&start_time=1390362485",
    "end_of_stream": true
  },
  "properties": {
    "count": {
      "type": "integer"
    },
    "tickets": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TicketObject"
      }
    },
    "end_time": {
      "type": "integer"
    },
    "next_page": {
      "type": "string",
      "nullable": true
    },
    "end_of_stream": {
      "type": "boolean"
    }
  },
  "description": "See [Tickets](https://developer.zendesk.com) for a detailed example.\n"
}
object TimeBasedExportIncrementalUsersResponse
{
  "type": "object",
  "example": {
    "count": 1,
    "users": [
      {
        "id": 35436,
        "url": "https://company.zendesk.com/api/v2/users/35436.json",
        "name": "Johnny Agent",
        "role": "agent",
        "tags": [
          "enterprise",
          "other_tag"
        ],
        "alias": "Mr. Johnny",
        "email": "johnny@example.com",
        "notes": "Johnny is a nice guy!",
        "phone": "+15551234567",
        "photo": {
          "id": 928374,
          "name": "my_funny_profile_pic.png",
          "size": 166144,
          "thumbnails": [
            {
              "id": 928375,
              "name": "my_funny_profile_pic_thumb.png",
              "size": 58298,
              "content_url": "https://company.zendesk.com/photos/my_funny_profile_pic_thumb.png",
              "content_type": "image/png"
            }
          ],
          "content_url": "https://company.zendesk.com/photos/my_funny_profile_pic.png",
          "content_type": "image/png"
        },
        "active": true,
        "locale": "en-US",
        "shared": false,
        "details": "",
        "verified": true,
        "locale_id": 1,
        "moderator": true,
        "role_type": 0,
        "signature": "Have a nice day, Johnny",
        "suspended": true,
        "time_zone": "Copenhagen",
        "created_at": "2009-07-20T22:55:29Z",
        "updated_at": "2011-05-05T10:38:52Z",
        "external_id": "sai989sur98w9",
        "user_fields": {
          "user_date": "2012-07-23T00:00:00Z",
          "user_decimal": 5.1,
          "user_dropdown": "option_1"
        },
        "shared_agent": false,
        "last_login_at": "2011-05-05T10:38:52Z",
        "custom_role_id": 9373643,
        "organization_id": 57542,
        "restricted_agent": true,
        "ticket_restriction": "assigned",
        "only_private_comments": false
      }
    ],
    "end_time": 1601357503,
    "next_page": "https://example.zendesk.com/api/v2/incremental/ticket_events.json?start_time=1601357503",
    "end_of_stream": true
  },
  "properties": {
    "count": {
      "type": "integer"
    },
    "users": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/UserObject"
      }
    },
    "end_time": {
      "type": "integer"
    },
    "next_page": {
      "type": "string",
      "nullable": true
    },
    "end_of_stream": {
      "type": "boolean"
    }
  }
}
object TrialAccountObject
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The URL of the account"
    },
    "name": {
      "type": "string",
      "description": "The name of the account"
    },
    "subdomain": {
      "type": "string",
      "description": "The subdomain of the account"
    }
  }
}
object TrialAccountResponse
{
  "type": "object",
  "properties": {
    "account": {
      "$ref": "#/components/schemas/TrialAccountObject"
    }
  }
}
object TriggerActionDefinitionObject
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string"
    },
    "group": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "values": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          }
        }
      }
    },
    "subject": {
      "type": "string"
    },
    "nullable": {
      "type": "boolean"
    },
    "repeatable": {
      "type": "boolean"
    }
  }
}
object TriggerActionDiffObject
{
  "type": "object",
  "example": {
    "field": [
      {
        "change": "+",
        "content": "solved"
      }
    ],
    "value": [
      {
        "change": "-",
        "content": "open"
      }
    ]
  },
  "properties": {
    "field": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerChangeObject"
      },
      "description": "An array of [change](https://developer.zendesk.com) objects."
    },
    "value": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerChangeObject"
      },
      "description": "An array of [change](https://developer.zendesk.com) objects."
    }
  }
}
object TriggerActionObject
{
  "type": "object",
  "example": {
    "field": "status",
    "value": "solved"
  },
  "properties": {
    "field": {
      "type": "string"
    },
    "value": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              }
            ]
          }
        }
      ]
    }
  }
}
object TriggerBatchRequest
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "active": {
      "type": "boolean"
    },
    "position": {
      "type": "integer",
      "format": "int64"
    },
    "category_id": {
      "type": "string"
    }
  }
}
object TriggerBulkUpdateItem
{
  "type": "object",
  "example": {
    "id": 25,
    "active": true,
    "position": 8,
    "category_id": "10026"
  },
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "The ID of the trigger to update"
    },
    "active": {
      "type": "boolean",
      "description": "The active status of the trigger (true or false)"
    },
    "position": {
      "type": "integer",
      "description": "The new position of the trigger"
    },
    "category_id": {
      "type": "string",
      "description": "The ID of the new category the trigger is to be moved to"
    }
  }
}
object TriggerBulkUpdateRequest
{
  "type": "object",
  "properties": {
    "triggers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerBulkUpdateItem"
      }
    }
  }
}
object TriggerCategoriesCreateCategoryRequest
{
  "type": "object",
  "properties": {
    "trigger_category": {
      "allOf": [
        {
          "$ref": "#/components/schemas/TriggerCategoryRequest"
        },
        {
          "$ref": "#/components/schemas/TriggerCategoryRequestRequired"
        }
      ]
    }
  }
}
object TriggerCategoriesGetListResponse
{
  "allOf": [
    {
      "$ref": "#/components/schemas/TriggerCategoriesResponse"
    },
    {
      "$ref": "#/components/schemas/Pagination"
    }
  ]
}
object TriggerCategoriesResponse
{
  "type": "object",
  "properties": {
    "trigger_categories": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerCategory"
      }
    }
  }
}
object TriggerCategoriesUpdateCategoryByIdRequest
{
  "type": "object",
  "properties": {
    "trigger_category": {
      "$ref": "#/components/schemas/TriggerCategoryRequest"
    }
  }
}
object TriggerCategory
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "readOnly": true
    },
    "name": {
      "type": "string"
    },
    "position": {
      "type": "integer",
      "format": "int64"
    },
    "created_at": {
      "type": "string",
      "readOnly": true
    },
    "updated_at": {
      "type": "string",
      "readOnly": true
    }
  }
}
object TriggerCategoryBatchRequest
{
  "type": "object",
  "required": [
    "id",
    "position"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "position": {
      "type": "integer",
      "format": "int64"
    }
  }
}
string TriggerCategoryId
{
  "type": "string"
}
object TriggerCategoryRequest
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "position": {
      "type": "integer",
      "format": "int64"
    }
  }
}
object TriggerCategoryRequestRequired
{
  "type": "object",
  "required": [
    "name"
  ]
}
object TriggerCategoryResponse
{
  "type": "object",
  "properties": {
    "trigger_category": {
      "$ref": "#/components/schemas/TriggerCategory"
    }
  }
}
object TriggerCategoryRuleCounts
{
  "type": "object",
  "properties": {
    "active_count": {
      "type": "integer",
      "format": "int64"
    },
    "inactive_count": {
      "type": "integer",
      "format": "int64"
    }
  }
}
object TriggerChangeObject
{
  "type": "object",
  "example": {
    "change": "+",
    "content": "solved"
  },
  "properties": {
    "change": {
      "type": "string",
      "description": "One of `-`, `+`, `=` representing the type of change"
    },
    "content": {
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              },
              {
                "type": "boolean"
              }
            ]
          }
        }
      ],
      "description": "The value of the item it represents"
    }
  }
}
object TriggerConditionDefinitionObjectAll
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string"
    },
    "group": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "values": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          }
        }
      }
    },
    "subject": {
      "type": "string"
    },
    "nullable": {
      "type": "boolean"
    },
    "operators": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "terminal": {
            "type": "boolean"
          }
        }
      }
    },
    "repeatable": {
      "type": "boolean"
    }
  }
}
object TriggerConditionDefinitionObjectAny
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string"
    },
    "group": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "subject": {
      "type": "string"
    },
    "nullable": {
      "type": "boolean"
    },
    "operators": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "terminal": {
            "type": "boolean"
          }
        }
      }
    },
    "repeatable": {
      "type": "boolean"
    }
  }
}
object TriggerConditionDiffObject
{
  "type": "object",
  "example": {
    "field": [
      {
        "change": "=",
        "content": "status"
      }
    ],
    "value": [
      {
        "change": "+",
        "content": "solved"
      }
    ],
    "operator": [
      {
        "change": "=",
        "content": "less_than"
      }
    ]
  },
  "properties": {
    "field": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerChangeObject"
      },
      "description": "An array of [change](https://developer.zendesk.com) objects"
    },
    "value": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerChangeObject"
      },
      "description": "An array of [change](https://developer.zendesk.com) objects"
    },
    "operator": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerChangeObject"
      },
      "description": "An array of [change](https://developer.zendesk.com) objects"
    }
  }
}
object TriggerConditionObject
{
  "type": "object",
  "example": {
    "field": "status",
    "value": "solved",
    "operator": "less_than"
  },
  "properties": {
    "field": {
      "type": "string"
    },
    "value": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              }
            ]
          }
        }
      ]
    },
    "operator": {
      "type": "string"
    }
  }
}
object TriggerConditionsDiffObject
{
  "type": "object",
  "properties": {
    "all": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerConditionDiffObject"
      },
      "nullable": true
    },
    "any": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerConditionDiffObject"
      },
      "nullable": true
    }
  }
}
object TriggerConditionsObject
{
  "type": "object",
  "example": {
    "all": [
      {
        "field": "status",
        "value": "solved",
        "operator": "less_than"
      },
      {
        "field": "assignee_id",
        "value": "296220096",
        "operator": "is"
      },
      {
        "field": "custom_status_id",
        "value": [
          "1",
          "2"
        ],
        "operator": "includes"
      }
    ],
    "any": [
      {
        "field": "status",
        "value": "solved",
        "operator": "less_than"
      },
      {
        "field": "custom_status_id",
        "value": [
          "1",
          "2"
        ],
        "operator": "includes"
      }
    ]
  },
  "properties": {
    "all": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerConditionObject"
      },
      "nullable": true
    },
    "any": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerConditionObject"
      },
      "nullable": true
    }
  },
  "description": "An object that describes the conditions under which the trigger will execute. See [Conditions reference](https://developer.zendesk.com)"
}
object TriggerDefinitionObject
{
  "type": "object",
  "properties": {
    "actions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerActionDefinitionObject"
      }
    },
    "conditions_all": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerConditionDefinitionObjectAll"
      }
    },
    "conditions_any": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerConditionDefinitionObjectAny"
      }
    }
  }
}
object TriggerDefinitionResponse
{
  "type": "object",
  "properties": {
    "definitions": {
      "$ref": "#/components/schemas/TriggerDefinitionObject"
    }
  }
}
object TriggerObject
{
  "type": "object",
  "example": {
    "id": 25,
    "url": "http://{subdomain}.zendesk.com/api/v2/triggers/25.json",
    "title": "Close and Save",
    "active": true,
    "actions": [
      {}
    ],
    "default": false,
    "position": 8,
    "raw_title": "Close and Save",
    "conditions": {},
    "created_at": "2012-09-25T22:50:26Z",
    "updated_at": "2012-09-25T22:50:26Z",
    "category_id": "10026",
    "description": "Close and save a ticket"
  },
  "required": [
    "conditions",
    "actions",
    "title"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The url of the trigger"
    },
    "title": {
      "type": "string",
      "description": "The title of the trigger"
    },
    "active": {
      "type": "boolean",
      "description": "Whether the trigger is active"
    },
    "actions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerActionObject"
      },
      "description": "An array of actions describing what the trigger will do. See [Actions reference](https://developer.zendesk.com)"
    },
    "default": {
      "type": "boolean",
      "readOnly": true,
      "description": "If true, the trigger is a default trigger"
    },
    "position": {
      "type": "integer",
      "description": "Position of the trigger, determines the order they will execute in"
    },
    "raw_title": {
      "type": "string",
      "description": "The raw format of the title of the trigger"
    },
    "conditions": {
      "$ref": "#/components/schemas/TriggerConditionsObject"
    },
    "created_at": {
      "type": "string",
      "readOnly": true,
      "description": "The time the trigger was created"
    },
    "updated_at": {
      "type": "string",
      "readOnly": true,
      "description": "The time of the last update of the trigger"
    },
    "category_id": {
      "type": "string",
      "description": "The ID of the category the trigger belongs to"
    },
    "description": {
      "type": "string",
      "description": "The description of the trigger"
    }
  }
}
object TriggerResponse
{
  "type": "object",
  "properties": {
    "trigger": {
      "$ref": "#/components/schemas/TriggerObject"
    }
  }
}
object TriggerRevisionResponse
{
  "type": "object",
  "properties": {
    "trigger_revision": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "url": {
          "type": "string"
        },
        "snapshot": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string"
            },
            "active": {
              "type": "boolean"
            },
            "actions": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/TriggerActionObject"
              }
            },
            "conditions": {
              "$ref": "#/components/schemas/TriggerConditionsObject"
            },
            "description": {
              "type": "string",
              "nullable": true
            }
          }
        },
        "author_id": {
          "type": "integer"
        },
        "created_at": {
          "type": "string"
        }
      }
    }
  }
}
object TriggerRevisionsResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "after_url": {
      "type": "string"
    },
    "before_url": {
      "type": "string"
    },
    "after_cursor": {
      "type": "string"
    },
    "before_cursor": {
      "type": "string"
    },
    "trigger_revisions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "url": {
            "type": "string"
          },
          "diff": {
            "type": "object",
            "properties": {
              "title": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TriggerChangeObject"
                },
                "description": "An array of [change](https://developer.zendesk.com) objects"
              },
              "active": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TriggerChangeObject"
                },
                "description": "An array of [change](https://developer.zendesk.com) objects"
              },
              "actions": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TriggerActionDiffObject"
                },
                "description": "An array that contain [action diff objects](#Action Diffs)"
              },
              "source_id": {
                "type": "integer",
                "description": "ID of the source revision"
              },
              "target_id": {
                "type": "integer",
                "description": "ID of the target revision"
              },
              "conditions": {
                "$ref": "#/components/schemas/TriggerConditionDiffObject"
              },
              "description": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TriggerChangeObject"
                },
                "description": "An array of [change](https://developer.zendesk.com) objects"
              }
            }
          },
          "snapshot": {
            "$ref": "#/components/schemas/TriggerSnapshotObject"
          },
          "author_id": {
            "type": "integer"
          },
          "created_at": {
            "type": "string"
          }
        }
      }
    }
  }
}
object TriggerSnapshotObject
{
  "type": "object",
  "example": {
    "title": "Notify requester of comment update",
    "active": true,
    "actions": [],
    "conditions": {},
    "description": "Notifies requester that a comment was updated"
  },
  "properties": {
    "title": {
      "type": "string",
      "description": "The title of the trigger"
    },
    "active": {
      "type": "boolean",
      "description": "Whether the trigger is active"
    },
    "actions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerActionObject"
      },
      "description": "An array of [Actions](https://developer.zendesk.com) describing what the trigger will do"
    },
    "conditions": {
      "$ref": "#/components/schemas/TriggerConditionsObject"
    },
    "description": {
      "type": "string",
      "nullable": true,
      "description": "The description of the trigger"
    }
  }
}
object TriggerWithCategoryRequest
{
  "type": "object",
  "properties": {
    "trigger": {
      "allOf": [
        {
          "$ref": "#/components/schemas/TriggerObject"
        },
        {
          "anyOf": [
            {
              "$ref": "#/components/schemas/TriggerCategory"
            },
            {
              "$ref": "#/components/schemas/TriggerCategoryId"
            }
          ]
        }
      ]
    }
  }
}
object TriggersResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "triggers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TriggerObject"
      }
    },
    "next_page": {
      "type": "string",
      "nullable": true
    },
    "previous_page": {
      "type": "string",
      "nullable": true
    }
  }
}
object TwitterChannelObject
{
  "type": "object",
  "title": "Monitored X handles",
  "example": {
    "id": 211,
    "created_at": "2009-05-13T00:07:08Z",
    "updated_at": "2011-07-22T00:11:12Z",
    "screen_name": "@zendesk",
    "twitter_user_id": 67462376832
  },
  "required": [
    "id",
    "screen_name",
    "twitter_user_id"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned upon creation"
    },
    "name": {
      "type": "string",
      "readOnly": true,
      "description": "The profile name of the handle"
    },
    "brand_id": {
      "type": "integer",
      "readOnly": true,
      "description": "What brand the handle is associated with"
    },
    "can_reply": {
      "type": "boolean",
      "readOnly": true,
      "description": "If replies are allowed for this handle"
    },
    "avatar_url": {
      "type": "string",
      "readOnly": true,
      "description": "The profile image url of the handle"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the handle was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time of the last update of the handle"
    },
    "allow_reply": {
      "type": "boolean",
      "readOnly": true,
      "description": "If replies are allowed for this handle"
    },
    "screen_name": {
      "type": "string",
      "readOnly": true,
      "description": "The X handle"
    },
    "twitter_user_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The country's code"
    }
  }
}
object TwitterChannelResponse
{
  "type": "object",
  "properties": {
    "monitored_twitter_handle": {
      "$ref": "#/components/schemas/TwitterChannelObject"
    }
  }
}
object TwitterChannelTwicketStatusResponse
{
  "type": "object",
  "properties": {
    "statuses": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "favorited": {
            "type": "boolean"
          },
          "retweeted": {
            "type": "boolean"
          },
          "user_followed": {
            "type": "boolean"
          }
        }
      }
    }
  }
}
object TwitterChannelsResponse
{
  "type": "object",
  "properties": {
    "monitored_twitter_handles": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/TwitterChannelObject"
      }
    }
  }
}
object UpdateResourceResult
{
  "type": "object",
  "required": [
    "id",
    "action",
    "success",
    "status"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "the id of the resource the job attempted to update"
    },
    "action": {
      "type": "string",
      "description": "the action the job attempted (`\"action\": \"update\"`)\n"
    },
    "status": {
      "type": "string",
      "description": "the status (`\"status\": \"Updated\"`)\n"
    },
    "success": {
      "type": "boolean",
      "description": "whether the action was successful or not (`\"success\": true`)\n"
    }
  }
}
object UrlObject
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "readOnly": true
    }
  }
}
object UserCreateInput
{
  "type": "object",
  "required": [
    "name",
    "email"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "role": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "identities": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "type",
          "value"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      }
    },
    "external_id": {
      "type": "string"
    },
    "organization": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        }
      }
    },
    "custom_role_id": {
      "type": "integer"
    },
    "organization_id": {
      "type": "integer"
    }
  }
}
object UserFieldResponse
{
  "type": "object",
  "properties": {
    "user_field": {
      "$ref": "#/components/schemas/CustomFieldObject"
    }
  }
}
string UserFieldsReorderFieldResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object UserFieldsResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true,
      "description": "Total count of records retrieved"
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "URL of the next page"
    },
    "user_fields": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomFieldObject"
      }
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true,
      "description": "URL of the previous page"
    }
  }
}
object UserForAdmin
{
  "type": "object",
  "title": "Users",
  "example": {
    "id": 35436,
    "url": "https://company.zendesk.com/api/v2/users/35436.json",
    "name": "Johnny Agent",
    "role": "agent",
    "tags": [
      "enterprise",
      "other_tag"
    ],
    "alias": "Mr. Johnny",
    "email": "johnny@example.com",
    "notes": "Johnny is a nice guy!",
    "phone": "+15551234567",
    "photo": {
      "id": 928374,
      "name": "my_funny_profile_pic.png",
      "size": 166144,
      "thumbnails": [
        {
          "id": 928375,
          "name": "my_funny_profile_pic_thumb.png",
          "size": 58298,
          "content_url": "https://company.zendesk.com/photos/my_funny_profile_pic_thumb.png",
          "content_type": "image/png"
        }
      ],
      "content_url": "https://company.zendesk.com/photos/my_funny_profile_pic.png",
      "content_type": "image/png"
    },
    "active": true,
    "locale": "en-US",
    "shared": false,
    "details": "",
    "verified": true,
    "locale_id": 1,
    "moderator": true,
    "role_type": 0,
    "signature": "Have a nice day, Johnny",
    "suspended": true,
    "time_zone": "Copenhagen",
    "created_at": "2009-07-20T22:55:29Z",
    "updated_at": "2011-05-05T10:38:52Z",
    "external_id": "sai989sur98w9",
    "user_fields": {
      "user_date": "2012-07-23T00:00:00Z",
      "user_decimal": 5.1,
      "user_dropdown": "option_1"
    },
    "shared_agent": false,
    "last_login_at": "2011-05-05T10:38:52Z",
    "custom_role_id": 9373643,
    "iana_time_zone": "Pacific/Pago_Pago",
    "organization_id": 57542,
    "restricted_agent": true,
    "ticket_restriction": "assigned",
    "only_private_comments": false
  },
  "required": [
    "name"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when the user is created"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The user's API url"
    },
    "name": {
      "type": "string",
      "description": "The user's name"
    },
    "role": {
      "type": "string",
      "description": "The user's role. Possible values are \"end-user\", \"agent\", or \"admin\""
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The user's tags. Only present if your account has user tagging enabled"
    },
    "alias": {
      "type": "string",
      "description": "An alias displayed to end users"
    },
    "email": {
      "type": "string",
      "description": "The user's primary email address. *Writeable on create only. On update, a secondary email is added. See [Email Address](https://developer.zendesk.com)"
    },
    "notes": {
      "type": "string",
      "description": "Any notes you want to store about the user"
    },
    "phone": {
      "type": "string",
      "nullable": true,
      "description": "The user's primary phone number. See [Phone Number](https://developer.zendesk.com) below"
    },
    "photo": {
      "type": "object",
      "nullable": true,
      "description": "The user's profile picture represented as an [Attachment](https://developer.zendesk.com) object",
      "additionalProperties": true
    },
    "active": {
      "type": "boolean",
      "readOnly": true,
      "description": "false if the user has been deleted"
    },
    "locale": {
      "type": "string",
      "description": "The user's locale. A BCP-47 compliant tag for the locale. If both \"locale\" and \"locale_id\" are present on create or update, \"locale_id\" is ignored and only \"locale\" is used."
    },
    "shared": {
      "type": "boolean",
      "readOnly": true,
      "description": "If the user is shared from a different Zendesk Support instance. Ticket sharing accounts only"
    },
    "details": {
      "type": "string",
      "description": "Any details you want to store about the user, such as an address"
    },
    "verified": {
      "type": "boolean",
      "description": "Any of the user's identities is verified. See [User Identities](https://developer.zendesk.com)"
    },
    "chat_only": {
      "type": "boolean",
      "readOnly": true,
      "description": "Whether or not the user is a chat-only agent"
    },
    "locale_id": {
      "type": "integer",
      "description": "The user's language identifier"
    },
    "moderator": {
      "type": "boolean",
      "description": "Designates whether the user has forum moderation capabilities"
    },
    "role_type": {
      "type": "integer",
      "nullable": true,
      "readOnly": true,
      "description": "The user's role id. 0 for a custom agent, 1 for a light agent, 2 for a chat agent, 3 for a chat agent added to the Support account as a contributor ([Chat Phase 4](https://support.zendesk.com/hc/en-us/articles/360022365373#topic_djh_1zk_4fb)), 4 for an admin, and 5 for a billing admin"
    },
    "signature": {
      "type": "string",
      "description": "The user's signature. Only agents and admins can have signatures"
    },
    "suspended": {
      "type": "boolean",
      "description": "If the agent is suspended. Tickets from suspended users are also suspended, and these users cannot sign in to the end user portal"
    },
    "time_zone": {
      "type": "string",
      "description": "The user's time zone. See [Time Zone](https://developer.zendesk.com)"
    },
    "created_at": {
      "type": "string",
      "format": "datetime",
      "readOnly": true,
      "description": "The time the user was created"
    },
    "report_csv": {
      "type": "boolean",
      "readOnly": true,
      "description": "This parameter is inert and has no effect. It may be deprecated in the\nfuture.\n\nPreviously, this parameter determined whether a user could access a CSV\nreport in a legacy Guide dashboard. This dashboard has been removed. See\n[Announcing Guide legacy reporting upgrade to\nExplore](https://support.zendesk.com/hc/en-us/articles/4762263171610-Announcing-Guide-legacy-reporting-upgrade-to-Explore-)\n"
    },
    "updated_at": {
      "type": "string",
      "format": "datetime",
      "readOnly": true,
      "description": "The time the user was last updated"
    },
    "external_id": {
      "type": "string",
      "nullable": true,
      "description": "A unique identifier from another system. The API treats the id as case insensitive. Example: \"ian1\" and \"IAN1\" are the same value."
    },
    "user_fields": {
      "type": "object",
      "description": "Values of custom fields in the user's profile. See [User Fields](https://developer.zendesk.com)",
      "additionalProperties": true
    },
    "shared_agent": {
      "type": "boolean",
      "readOnly": true,
      "description": "If the user is a shared agent from a different Zendesk Support instance. Ticket sharing accounts only"
    },
    "last_login_at": {
      "type": "string",
      "format": "datetime",
      "readOnly": true,
      "description": "Last time the user signed in to Zendesk Support or made an API request\nusing an API token or basic authentication\n"
    },
    "custom_role_id": {
      "type": "integer",
      "nullable": true,
      "description": "A custom role if the user is an agent on the Enterprise plan or above"
    },
    "iana_time_zone": {
      "type": "string",
      "readOnly": true,
      "description": "The time zone for the user"
    },
    "organization_id": {
      "type": "integer",
      "nullable": true,
      "description": "The id of the user's organization. If the user has more than one [organization memberships](https://developer.zendesk.com), the id of the user's default organization. If updating, see [Organization ID](https://developer.zendesk.com)"
    },
    "default_group_id": {
      "type": "integer",
      "description": "The id of the user's default group"
    },
    "remote_photo_url": {
      "type": "string",
      "description": "A URL pointing to the user's profile picture."
    },
    "restricted_agent": {
      "type": "boolean",
      "description": "If the agent has any restrictions; false for admins and unrestricted agents, true for other agents"
    },
    "ticket_restriction": {
      "type": "string",
      "nullable": true,
      "description": "Specifies which tickets the user has access to. Possible values are: \"organization\", \"groups\", \"assigned\", \"requested\", null. \"groups\" and \"assigned\" are valid only for agents. If you pass an invalid value to an end user (for example, \"groups\"), they will be assigned to \"requested\", regardless of their previous access"
    },
    "shared_phone_number": {
      "type": "boolean",
      "nullable": true,
      "description": "Whether the `phone` number is shared or not. See [Phone Number](https://developer.zendesk.com) below"
    },
    "only_private_comments": {
      "type": "boolean",
      "description": "true if the user can only create private comments"
    },
    "two_factor_auth_enabled": {
      "type": "boolean",
      "nullable": true,
      "readOnly": true,
      "description": "If two factor authentication is enabled"
    }
  }
}
object UserForEndUser
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when creating users"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of this user"
    },
    "name": {
      "type": "string",
      "description": "The name of the user"
    },
    "role": {
      "type": "string",
      "description": "The role of the user. Possible values: `\"end-user\"`, `\"agent\"`, `\"admin\"`"
    },
    "email": {
      "type": "string",
      "description": "The primary email address of this user. If the primary email address is not [verified](https://support.zendesk.com/hc/en-us/articles/4408886752410), the secondary email address is used"
    },
    "phone": {
      "type": "string",
      "description": "The primary phone number of this user. See [Phone Number](/api-reference/ticketing/users/users/#phone-number) in the Users API"
    },
    "photo": {
      "type": "object",
      "description": "The user's profile picture represented as an [Attachment](https://developer.zendesk.com) object",
      "additionalProperties": true
    },
    "locale": {
      "type": "string",
      "readOnly": true,
      "description": "The locale for this user"
    },
    "verified": {
      "type": "boolean",
      "description": "Any of the user's identities is verified. See [User Identities](https://developer.zendesk.com)"
    },
    "locale_id": {
      "type": "integer",
      "description": "The language identifier for this user"
    },
    "time_zone": {
      "type": "string",
      "description": "The time-zone of this user"
    },
    "created_at": {
      "type": "string",
      "format": "datetime",
      "readOnly": true,
      "description": "The time the user was created"
    },
    "updated_at": {
      "type": "string",
      "format": "datetime",
      "readOnly": true,
      "description": "The time of the last update of the user"
    },
    "iana_time_zone": {
      "type": "string",
      "readOnly": true,
      "description": "The time zone for the user"
    },
    "organization_id": {
      "type": "integer",
      "description": "The id of the user's organization. If the user has more than one [organization memberships](https://developer.zendesk.com), the id of the user's default organization. If updating, see [Organization ID](/api-reference/ticketing/users/users/#organization-id)"
    },
    "shared_phone_number": {
      "type": "boolean",
      "description": "Whether the `phone` number is shared or not. See [Phone Number](/api-reference/ticketing/users/users/#phone-number) in the Users API"
    }
  }
}
string UserIdentitiesRequestVerificationEmailResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object UserIdentitiesResponse
{
  "type": "object",
  "properties": {
    "identities": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/UserIdentityObject"
      }
    }
  }
}
object UserIdentityObject
{
  "type": "object",
  "example": {
    "id": 35436,
    "url": "https://company.zendesk.com/api/v2/users/135/identities/35436.json",
    "type": "email",
    "value": "someone@example.com",
    "primary": true,
    "user_id": 135,
    "verified": true,
    "created_at": "2011-07-20T22:55:29Z",
    "updated_at": "2011-07-20T22:55:29Z",
    "deliverable_state": "deliverable"
  },
  "required": [
    "user_id",
    "type",
    "value"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned on creation"
    },
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of this identity"
    },
    "type": {
      "enum": [
        "email",
        "twitter",
        "facebook",
        "google",
        "phone_number",
        "agent_forwarding",
        "any_channel",
        "foreign",
        "sdk"
      ],
      "type": "string",
      "readOnly": true,
      "description": "The type of this identity"
    },
    "value": {
      "type": "string",
      "readOnly": true,
      "description": "The identifier for this identity, such as an email address"
    },
    "primary": {
      "type": "boolean",
      "description": "If the identity is the primary identity. *Writable only when creating, not when updating. Use the [Make Identity Primary](https://developer.zendesk.com) endpoint instead"
    },
    "user_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of the user"
    },
    "verified": {
      "type": "boolean",
      "description": "If the identity has been verified"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the identity was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the identity was updated"
    },
    "deliverable_state": {
      "type": "string",
      "readOnly": true,
      "description": "Email identity type only. Indicates if Zendesk sends notifications to the email address. See [Deliverable state](https://developer.zendesk.com)"
    },
    "undeliverable_count": {
      "type": "integer",
      "readOnly": true,
      "description": "The number of times a soft-bounce response was received at that address"
    }
  }
}
object UserIdentityResponse
{
  "type": "object",
  "properties": {
    "identity": {
      "$ref": "#/components/schemas/UserIdentityObject"
    }
  }
}
object UserInput
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/UserCreateInput"
    },
    {
      "$ref": "#/components/schemas/UserMergePropertiesInput"
    },
    {
      "$ref": "#/components/schemas/UserMergeByIdInput"
    }
  ],
  "additionalProperties": true
}
object UserMergeByIdInput
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer"
    }
  }
}
object UserMergePropertiesInput
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "password": {
      "type": "string"
    },
    "organization_id": {
      "type": "integer"
    }
  }
}
object UserObject
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/UserForAdmin"
    },
    {
      "$ref": "#/components/schemas/UserForEndUser"
    }
  ],
  "additionalProperties": true
}
object UserPasswordRequirementsResponse
{
  "type": "object",
  "properties": {
    "requirements": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
}
string UserPasswordsChangePasswordResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
string UserPasswordsSetNewPasswordResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object UserRelatedObject
{
  "type": "object",
  "properties": {
    "ccd_tickets": {
      "type": "integer",
      "description": "Count of collaborated tickets"
    },
    "assigned_tickets": {
      "type": "integer",
      "description": "Count of assigned tickets"
    },
    "requested_tickets": {
      "type": "integer",
      "description": "Count of requested tickets"
    },
    "organization_subscriptions": {
      "type": "integer",
      "description": "Count of organization subscriptions"
    }
  }
}
object UserRelatedResponse
{
  "type": "object",
  "properties": {
    "user_related": {
      "$ref": "#/components/schemas/UserRelatedObject"
    }
  }
}
object UserRequest
{
  "type": "object",
  "required": [
    "user"
  ],
  "properties": {
    "user": {
      "$ref": "#/components/schemas/UserInput"
    }
  }
}
object UserResponse
{
  "type": "object",
  "properties": {
    "user": {
      "$ref": "#/components/schemas/UserObject"
    }
  }
}
string UsersLogoutManyUsersResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object UsersRequest
{
  "type": "object",
  "required": [
    "users"
  ],
  "properties": {
    "users": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/UserInput"
      }
    }
  }
}
string UsersRequestCreateReminderResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object UsersResponse
{
  "type": "object",
  "properties": {
    "users": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/UserObject"
      }
    }
  }
}
object UsersUpdateManyRequest
{
  "oneOf": [
    {
      "$ref": "#/components/schemas/UserRequest"
    },
    {
      "$ref": "#/components/schemas/UsersRequest"
    }
  ],
  "additionalProperties": true
}
object ViaObject
{
  "type": "object",
  "example": {
    "source": {
      "to": {},
      "rel": "trigger",
      "from": {
        "id": 22472716,
        "title": "Assign to first responder"
      }
    },
    "channel": "rule"
  },
  "readOnly": true,
  "properties": {
    "source": {
      "type": "object",
      "properties": {
        "to": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "address": {
              "type": "string"
            }
          }
        },
        "rel": {
          "type": "string",
          "nullable": true
        },
        "from": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "nullable": true
            },
            "name": {
              "type": "string",
              "nullable": true
            },
            "title": {
              "type": "string",
              "nullable": true
            },
            "address": {
              "type": "string",
              "nullable": true
            }
          }
        }
      },
      "description": "For some channels a source object gives more information about how or why the ticket or event was created\n",
      "additionalProperties": true
    },
    "channel": {
      "type": "string",
      "description": "This tells you how the ticket or event was created. Examples: \"web\", \"mobile\", \"rule\", \"system\"\n"
    }
  },
  "description": "An object explaining how the ticket was created. See the [Via object reference](https://developer.zendesk.com)\n"
}
object ViewCountObject
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "readOnly": true,
      "description": "The API url of the count"
    },
    "fresh": {
      "type": "boolean",
      "readOnly": true,
      "description": "false if the cached data is stale and the system is still loading and caching new data"
    },
    "value": {
      "type": "integer",
      "nullable": true,
      "readOnly": true,
      "description": "The cached number of tickets in the view. Can also be null if the system is loading and caching new data. Not to be confused with 0 tickets"
    },
    "active": {
      "type": "boolean",
      "readOnly": true,
      "description": "Only active views if true, inactive views if false, all views if null."
    },
    "pretty": {
      "type": "string",
      "readOnly": true,
      "description": "A pretty-printed text approximation of the view count"
    },
    "view_id": {
      "type": "integer",
      "readOnly": true,
      "description": "The id of the view"
    }
  }
}
object ViewCountResponse
{
  "type": "object",
  "properties": {
    "view_count": {
      "$ref": "#/components/schemas/ViewCountObject"
    }
  }
}
object ViewCountsResponse
{
  "type": "object",
  "properties": {
    "view_counts": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ViewCountObject"
      }
    }
  }
}
object ViewExportResponse
{
  "type": "object",
  "properties": {
    "export": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "readOnly": true
        },
        "view_id": {
          "type": "integer",
          "readOnly": true
        }
      }
    }
  }
}
object ViewObject
{
  "type": "object",
  "example": {
    "id": 25,
    "title": "Tickets updated <12 Hours",
    "active": true,
    "default": false,
    "position": 8,
    "execution": {
      "sort": {
        "id": "updatedX",
        "order": "desc",
        "title": "Updated"
      },
      "group": {
        "id": "statusX",
        "order": "desc",
        "title": "Status"
      },
      "columns": [
        {
          "id": "status",
          "title": "Status"
        },
        {
          "id": "updated",
          "title": "Updated"
        },
        {
          "id": 5,
          "url": "https://example.zendesk.com/api/v2/ticket_fields/5.json",
          "type": "text",
          "title": "Account"
        }
      ]
    },
    "conditions": {
      "all": [
        {
          "field": "status",
          "value": "solved",
          "operator": "less_than"
        },
        {
          "field": "assignee_id",
          "value": "296220096",
          "operator": "is"
        }
      ],
      "any": []
    },
    "description": "View for recent tickets",
    "restriction": {
      "id": 4,
      "type": "User"
    }
  },
  "properties": {
    "id": {
      "type": "integer",
      "readOnly": true,
      "description": "Automatically assigned when created"
    },
    "title": {
      "type": "string",
      "description": "The title of the view"
    },
    "active": {
      "type": "boolean",
      "description": "Whether the view is active"
    },
    "default": {
      "type": "boolean",
      "readOnly": true,
      "description": "If true, the view is a default view"
    },
    "position": {
      "type": "integer",
      "description": "The position of the view"
    },
    "execution": {
      "type": "object",
      "description": "Describes how the view should be executed. See [Execution](https://developer.zendesk.com)",
      "additionalProperties": true
    },
    "conditions": {
      "type": "object",
      "description": "Describes how the view is constructed. See [Conditions reference](https://developer.zendesk.com)",
      "additionalProperties": true
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the view was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "The time the view was last updated"
    },
    "description": {
      "type": "string",
      "description": "The description of the view"
    },
    "restriction": {
      "type": "object",
      "description": "Who may access this account. Is null when everyone in the account can access it",
      "additionalProperties": true
    }
  }
}
object ViewResponse
{
  "type": "object",
  "properties": {
    "rows": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "view": {
      "$ref": "#/components/schemas/ViewObject"
    },
    "groups": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "columns": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  }
}
object ViewsCountResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer"
        },
        "refreshed_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    }
  }
}
object ViewsResponse
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "readOnly": true
    },
    "views": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ViewObject"
      }
    },
    "next_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "previous_page": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    }
  }
}
object WorkspaceInput
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "The title of the workspace"
    },
    "macros": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "conditions": {
      "$ref": "#/components/schemas/ConditionsObject"
    },
    "description": {
      "type": "string",
      "description": "User-defined description of this workspace's purpose"
    },
    "ticket_form_id": {
      "type": "number"
    }
  }
}
object WorkspaceObject
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Automatically assigned upon creation"
    },
    "url": {
      "type": "string",
      "description": "The URL for this resource"
    },
    "apps": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "description": "The apps associated to this workspace"
    },
    "title": {
      "type": "string",
      "description": "The title of the workspace"
    },
    "macros": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "The ids of the macros associated to this workspace"
    },
    "position": {
      "type": "integer",
      "description": "Ordering of the workspace relative to other workspaces"
    },
    "activated": {
      "type": "boolean",
      "description": "If true, this workspace is available for use"
    },
    "macro_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "The ids of the macros associated to this workspace"
    },
    "conditions": {
      "$ref": "#/components/schemas/ConditionsObject"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time the workspace was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time of the last update of the workspace"
    },
    "description": {
      "type": "string",
      "description": "User-defined description of this workspace's purpose"
    },
    "ticket_form_id": {
      "type": "integer",
      "description": "The id of the ticket web form associated to this workspace"
    },
    "selected_macros": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/MacroObject"
      },
      "description": "An array of the macro objects that will be used in this workspace. See [Macros](https://developer.zendesk.com)"
    },
    "prefer_workspace_app_order": {
      "type": "boolean",
      "description": "If true, the order of apps within the workspace will be preserved"
    }
  }
}
object WorkspaceResponse
{
  "type": "object",
  "allOf": [
    {
      "type": "object",
      "properties": {
        "workspaces": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/WorkspaceObject"
          }
        }
      }
    },
    {
      "$ref": "#/components/schemas/OffsetPaginationObject"
    }
  ]
}
string WorkspacesBulkDeleteResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object WorkspacesCreateNewRequest
{
  "type": "object",
  "properties": {
    "workspace": {
      "$ref": "#/components/schemas/WorkspaceInput"
    }
  }
}
object WorkspacesCreateNewResponse
{
  "type": "object",
  "properties": {
    "workspace": {
      "$ref": "#/components/schemas/WorkspaceObject"
    }
  }
}
object WorkspacesGetWorkspaceResponse
{
  "type": "object",
  "properties": {
    "workspace": {
      "$ref": "#/components/schemas/WorkspaceObject"
    }
  }
}
object WorkspacesReorderWorkspacesRequest
{
  "type": "object",
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "number"
      }
    }
  }
}
string WorkspacesReorderWorkspacesResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}
object WorkspacesUpdateWorkspaceRequest
{
  "type": "object",
  "properties": {
    "workspace": {
      "$ref": "#/components/schemas/WorkspaceInput"
    }
  }
}
object WorkspacesUpdateWorkspaceResponse
{
  "type": "object",
  "properties": {
    "workspace": {
      "$ref": "#/components/schemas/WorkspaceObject"
    }
  }
}
string XChannelTweetToTicketResponse
{
  "type": "string",
  "example": "",
  "description": "Empty response"
}