Skip to content

Commit

Permalink
Zendesk enhancement (#27101)
Browse files Browse the repository at this point in the history
* First commit

* Added new command "zendesk-group-user-list"

* Update release notes

* Added html_comment to the create and update ticket + README updates

* Updated rn

* just a commit

* Added another command + updated TPB + Updated incoming mapper

* Added test + small fixes

* Remove comment

* flake8

* Fixed docs notes

* Update docker

* Bump pack from version Zendesk to 2.0.8.

* Some CR comments

* Fixed release notes version

* Fixed release notes version

* Fixed cr comments + updated image

* Fix tests

* -

* -

* Last comment

---------

Co-authored-by: Content Bot <bot@demisto.com>
  • Loading branch information
Shellyber and Content Bot authored Jun 22, 2023
1 parent 5cd9536 commit 47112e2
Show file tree
Hide file tree
Showing 8 changed files with 880 additions and 162 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,9 @@
},
"IncomingMirrorError": {
"simple": "incomming_mirror_error"
},
"Assignment Group": {
"simple": "group_id"
}
}
}
Expand Down
230 changes: 208 additions & 22 deletions Packs/Zendesk/Integrations/Zendeskv2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -389,29 +389,31 @@ Required permissions: Agents.
`zendesk-ticket-create`
#### Input

| **Argument Name** | **Description** | **Required** |
| --- | --- | --- |
| subject | The subject of this ticket. | Required |
| type | The type of this ticket. Possible values are: problem, incident, question, task. | Required |
| requester | The user who requested this ticket. | Required |
| assignee_email | The email address of the agent to assign the ticket to. | Optional |
| collaborators | Users to add as CC's when creating a ticket. | Optional |
| description | The ticket description. | Required |
| recipient | The original recipient email address of the ticket. | Optional |
| status | The state of the ticket. Possible values are: new, open, pending, hold, solved, closed. | Optional |
| priority | The urgency with which the ticket should be addressed. Possible values are: urgent, high, normal, low. Default is normal. | Optional |
| due_at | If this is a ticket of type "task" it has a due date. Due date format uses ISO 8601 format. | Optional |
| email_ccs | An array of agents or end users email CCs to add or delete from the ticket. Default is add.\nThe format is '562624,562625:put,example@example.com:delete'. | Optional |
| external_id | An ID you can use to link Zendesk Support tickets to local records. | Optional |
| forum_topic_id | The topic in the Zendesk Web portal this ticket originated from, if any. | Optional |
| followers | An array of agent followers to add or delete from the ticket. Default is add.\nThe format is '562624,562625:put,example@example.com:delete'. | Optional |
| group_id | The group this ticket is assigned to. | Optional |
| organization_id | The organization of the requester. | Optional |
| problem_id | For tickets of type "incident", the ID of the problem the incident is linked to. | Optional |
| tags | The tags applied to this ticket. | Optional |
| **Argument Name** | **Description** | **Required** |
|------------------------| --- | --- |
| subject | The subject of this ticket. | Required |
| type | The type of this ticket. Possible values are: problem, incident, question, task. | Required |
| requester | The user who requested this ticket. | Required |
| assignee_email | The email address of the agent to assign the ticket to. | Optional |
| collaborators | Users to add as CC's when creating a ticket. | Optional |
| description | The ticket description. | Required |
| recipient | The original recipient email address of the ticket. | Optional |
| status | The state of the ticket. Possible values are: new, open, pending, hold, solved, closed. | Optional |
| priority | The urgency with which the ticket should be addressed. Possible values are: urgent, high, normal, low. Default is normal. | Optional |
| due_at | If this is a ticket of type "task" it has a due date. Due date format uses ISO 8601 format. | Optional |
| email_ccs | An array of agents or end users email CCs to add or delete from the ticket. Default is add.\nThe format is '562624,562625:put,example@example.com:delete'. | Optional |
| external_id | An ID you can use to link Zendesk Support tickets to local records. | Optional |
| forum_topic_id | The topic in the Zendesk Web portal this ticket originated from, if any. | Optional |
| followers | An array of agent followers to add or delete from the ticket. Default is add.\nThe format is '562624,562625:put,example@example.com:delete'. | Optional |
| group_id | The group this ticket is assigned to. | Optional |
| organization_id | The organization of the requester. | Optional |
| problem_id | For tickets of type "incident", the ID of the problem the incident is linked to. | Optional |
| tags | The tags applied to this ticket. | Optional |
| via_followup_source_id | The ID of a closed ticket when creating a follow-up ticket. | Optional |
| custom_fields | Custom fields for the ticket (this is a JSON-formatted argument, see: https://developer.zendesk.com/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-custom-field-values). | Optional |
| brand_id | Enterprise only. The ID of the brand this ticket is associated with. | Optional |
| custom_fields | Custom fields for the ticket (this is a JSON-formatted argument, see: https://developer.zendesk.com/documentation/ticketing/managing-tickets/creating-and-updating-tickets#setting-custom-field-values). | Optional |
| brand_id | Enterprise only. The ID of the brand this ticket is associated with. | Optional |
| comment | A comment to add to the ticket. | Optional |
| html_comment | An HTML comment to add to the ticket. | Optional |


#### Context Output
Expand Down Expand Up @@ -477,6 +479,7 @@ Required permissions: Agents.
| assignee_email | The email address of the agent to assign the ticket to. | Optional |
| collaborators | Users to add as CCs when creating a ticket. | Optional |
| comment | A comment to add to the ticket. | Optional |
| html_comment | An HTML comment to add to the ticket. | Optional |
| recipient | The original recipient email address of the ticket. | Optional |
| status | The state of the ticket. Possible values are: open, pending, hold, solved, closed. | Optional |
| priority | The urgency with which the ticket should be addressed. Possible values are: urgent, high, normal, low. | Optional |
Expand Down Expand Up @@ -788,3 +791,186 @@ To set up the mirroring:
Newly fetched incidents will be mirrored in the chosen direction. However, this selection does not affect existing incidents.
**Important Note:** To ensure the mirroring works as expected, mappers are required, both for incoming and outgoing, to map the expected fields in Cortex XSOAR and Zendesk v2.

### zendesk-group-user-list

***
Get group's users.
Allowed for: Admins, Agents and Light Agents.

*Note*: In case the group_id does not exist, the command will return all users.

#### Base Command

`zendesk-group-user-list`

#### Input

| **Argument Name** | **Description** | **Required** |
| --- | --- | --- |
| group_id | The ID of a specific group. | Required |
| limit | Maximum number of results to return. Default is 50. | Optional |
| page_size | The page size (used for pagination). | Optional |
| page_number | The page number (used for pagination). | Optional |

#### Context Output

| **Path** | **Type** | **Description** |
| --- | --- | --- |
| Zendesk.UserGroup.active | Boolean | False if the user has been deleted. |
| Zendesk.UserGroup.alias | String | An alias displayed to end users. |
| Zendesk.UserGroup.created_at | Date | The time the user was created. |
| Zendesk.UserGroup.custom_role_id | Number | A custom role if the user is an agent on the Enterprise plan or above. |
| Zendesk.UserGroup.default_group_id | Number | The ID of the user's default group. |
| Zendesk.UserGroup.details | String | Any details you want to store about the user, such as an address. |
| Zendesk.UserGroup.email | String | The user's primary email address. |
| Zendesk.UserGroup.external_id | String | A unique identifier from another system. |
| Zendesk.UserGroup.iana_time_zone | String | The time zone for the user. |
| Zendesk.UserGroup.id | Number | The user's ID. |
| Zendesk.UserGroup.last_login_at | Date | The last time the user signed in to Zendesk Support. |
| Zendesk.UserGroup.locale | String | The user's locale. |
| Zendesk.UserGroup.locale_id | Number | The user's locale ID. |
| Zendesk.UserGroup.moderator | Boolean | Whether the user has forum moderation capabilities. |
| Zendesk.UserGroup.name | String | The user's name. |
| Zendesk.UserGroup.notes | String | Any notes you want to store about the user. |
| Zendesk.UserGroup.only_private_comments | Boolean | True if the user can only create private comments. |
| Zendesk.UserGroup.organization_id | Number | The ID of the user's organization. |
| Zendesk.UserGroup.phone | String | The user's primary phone number. |
| Zendesk.UserGroup.photo | String | A URL pointing to the user's profile picture. |
| Zendesk.UserGroup.report_csv | Boolean | Whether the user can access the CSV report on the Search tab of the Reporting page in the Support admin interface. |
| Zendesk.UserGroup.restricted_agent | Boolean | Whether the agent has any restrictions; false for admins and unrestricted agents, true for other agents. |
| Zendesk.UserGroup.role | String | The user's role. Possible values are "end-user", "agent", or "admin". |
| Zendesk.UserGroup.role_type | Number | The user's role type. |
| Zendesk.UserGroup.shared | Boolean | Whether the user is shared from a different Zendesk Support instance. |
| Zendesk.UserGroup.shared_agent | Boolean | Whether the user is a shared agent from a different Zendesk Support instance. |
| Zendesk.UserGroup.shared_phone_number | Boolean | Whether the phone number is shared. |
| Zendesk.UserGroup.signature | String | The user's signature. |
| Zendesk.UserGroup.suspended | Boolean | Whether the agent is suspended. Tickets from suspended users are also suspended, and these users cannot sign in to the end user portal. |
| Zendesk.UserGroup.tags | Unknown | The user's tags. Only present if your account has user tagging enabled. |
| Zendesk.UserGroup.ticket_restriction | Unknown | Specifies which tickets the user has access to. Possible values are: "organization", "groups", "assigned", "requested", null. |
| Zendesk.UserGroup.time_zone | String | The user's time zone. |
| Zendesk.UserGroup.two_factor_auth_enabled | Unknown | Whether two factor authentication is enabled. |
| Zendesk.UserGroup.updated_at | Date | The time the user was last updated. |
| Zendesk.UserGroup.url | String | The URL that points to the user's API record. |
| Zendesk.UserGroup.user_fields | Unknown | The user fields as shown in the Zendesk user interface. |
| Zendesk.UserGroup.verified | Boolean | Whether any of the user's identities is verified. |

#### Command example
```!zendesk-group-user-list group_id=12345 limit=1```
#### Context Example
```json
{
"Zendesk": {
"UserGroup": [
{
"active": true,
"alias": "",
"created_at": "2022-03-27T08:42:06Z",
"custom_role_id": 4678497517981,
"default_group_id": 4678483739805,
"details": "",
"email": "test@user.com",
"external_id": null,
"iana_time_zone": "Asia/Jerusalem",
"id": 1908275070333,
"last_login_at": "2023-05-31T11:13:41Z",
"locale": "en-US",
"locale_id": 1,
"moderator": true,
"name": "Admin",
"notes": "",
"only_private_comments": false,
"organization_id": 4678483740317,
"phone": null,
"photo": null,
"report_csv": true,
"restricted_agent": false,
"role": "admin",
"role_type": 4,
"shared": false,
"shared_agent": false,
"shared_phone_number": null,
"signature": "",
"suspended": false,
"tags": [],
"ticket_restriction": null,
"time_zone": "Asia/Jerusalem",
"two_factor_auth_enabled": null,
"updated_at": "2023-05-31T11:13:41Z",
"url": "https://some-url/api/v2/users/1908275070333.json",
"user_fields": {},
"verified": true
}
]
}
}
```

#### Human Readable Output

>### Zendesk Group Users:
>|Id|Name|Email|Role|CreatedAt|
>|---|---|---|---|---|
>| 1908275070333 | Admin | test@user.com | admin | 2022-03-27T08:42:06Z |
### zendesk-group-list

***
Get Zendesk groups.
Allowed for: Admins, Agents.

#### Base Command

`zendesk-group-list`

#### Input

| **Argument Name** | **Description** | **Required** |
| --- | --- | --- |
| limit | Maximum number of results to return. Default is 50. | Optional |
| page_size | The page size (used for pagination). | Optional |
| page_number | The page number (used for pagination). | Optional |

#### Context Output

| **Path** | **Type** | **Description** |
| --- | --- | --- |
| Zendesk.Group.created_at | Date | The time the group was created. |
| Zendesk.Group.default | Boolean | If the group is the default one for the account. |
| Zendesk.Group.deleted | Boolean | `true` if the group is deleted `false` otherwise. |
| Zendesk.Group.description | String | The description of the group. |
| Zendesk.Group.id | Number | The group ID. |
| Zendesk.Group.is_public | Boolean | If true, the group is public. If false, the group is private. You can't change a private group to a public group. |
| Zendesk.Group.name | String | The name of the group. |
| Zendesk.Group.updated_at | Date | The time of the last update of the group. |
| Zendesk.Group.url | String | The API URL of the group. |

#### Command example
```!zendesk-group-list limit=1```
#### Context Example
```json
{
"Zendesk": {
"Group": [
{
"created_at": "2023-06-06T07:44:20Z",
"default": false,
"deleted": false,
"description": "This is a group for testing",
"id": 11395818128925,
"is_public": true,
"name": "Test Group",
"updated_at": "2023-06-06T07:44:20Z",
"url": "https://some-url/api/v2/groups/11395818128925.json"
}
]
}
}
```

#### Human Readable Output

>### Zendesk groups:
>|Id| Name |IsPublic|CreatedAt|UpdatedAt|
>|------|---|---|---|---|
>| 11395818128925 | Test Group | true | 2023-06-06T07:44:20Z | 2023-06-06T07:44:20Z |
Loading

0 comments on commit 47112e2

Please sign in to comment.