TOPdesk

TOPdesk’s Enterprise Service Management software (ESM) lets your service teams join forces and process requests from a single platform.

Case Management · TOPdesk

Details

IDTOPdesk
ProviderTOPdesk
CategoryCase Management
From Version5.0.0
Docker Imagedemisto/python3:3.12.13.10116658
Supported ModulesAgentix XSIAM

README

TOPdesk’s Enterprise Service Management software (ESM) lets your service teams join forces and process requests from a single platform.
This integration was integrated and tested with 10.08.008-on-premises-release3-build2 for Linux x86 64-bit of TOPdesk.

Use cases

  1. Get, update, and create TOPdesk incidents, as well as (de-)escalate, (un)archive or upload files to the incidents.
  2. Fetch newly created TOPdesk incidents.
  3. Get information about branches, persons and operators.

Configure TOPdesk on Cortex XSOAR

  1. Navigate to Settings > Integrations > Servers & Services.
  2. Search for TOPdesk.
  3. Click Add instance to create and configure a new integration instance.

    Parameter Description Required
    Server URL (e.g., https://topdesk.mydomain/tas/) The server url. True
    Username See section about auth details below True
    Password See section about auth details below True
    Fetch incidents   False
    Maximum number of incidents per fetch   False
    First fetch time (<number> <time unit>, e.g., 12 hours, 7 days, 3 months, 1 year)   False
    Default Incident Caller ID The default caller ID which is added when creating new TOPdesk incidents and no explicit caller ID is provided. See See Finding the Default Incident Caller ID. False
    The query to use when fetching incidents Getting incidents with new style FIQL query is available only from TOPdeskRestAPI version 3.4.0. For earlier versions this field will be used as additional inline params as supported. False
    Incident type Use TOPdesk Incident for some predefined layouts False
    Trust any certificate (not secure)   False
    Use system proxy settings   False
  4. Click Test to validate the URLs, token, and connection.

Auth Details

Person and operator are TOPdesk’s user types. Each user type has a different set of actions that he is allowed to perform.
For example, a person can only update incidents he created, while an operator can update a wider range of incidents.

In general, if an account is able to preform the requested command in TOPdesk’s UI, it should be able to preform it using this integration.
Make sure you use the right account for your needs and that the account used has all the required permissions.

Setup TOPdesk’s application password

  1. Login to TOPdesk with the designated account.
  2. In TOPdesk, click Open user menu (top right side of the front page) > Choose My settings
  3. At the bottom of the page should be an Application passwords section. You can view all application passwords that are configured for the logged in account.
  4. At the bottom right corner, click Add.
  5. A window should open requesting a name for the application. Choose any convenient name (e.g., XSOAR-key) and click Create.
  6. The application password should be shown - copy it to a safe location. This is the password that will be used for the integration in XSOAR.
  7. Once copied for further usage you can click Close.

Configure Username and Password

Username: Use the account username from which the application password was generated. (Not the key name)

Password: Use the application password generated in step 6 of the Setup TOPdesk’s application password procedure.

Troubleshooting

Make sure the application password is not expired by logging in TOPdesk and viewing it as described in step 3 of the Setup TOPdesk’s application password procedure.

Finding the Default Incident Caller ID

The TOPdesk incident caller is the TOPdesk person who requested a specific TOPdesk incident and is the contact person for all activities related to this incident.
To find the incident caller ID which should be used as the default caller when creating a new TOPdesk incident, first configure the integration instance without providing the Default Incident Caller ID. Then run the command !topdesk-persons-list in the Playground - War Room.
You will receive a list of people and their IDs. Copy the ID of the desired person and edit the integration instance to set the Default Incident Caller ID.

Incident Mirroring

You can enable incident mirroring between Cortex XSOAR incidents and TOPdesk incidents.

To setup the mirroring follow these instructions:

  1. Navigate to Settings > Integrations > Servers & Services.
  2. Search for TOPdesk and select your integration instance.
  3. Enable Fetches incidents.
  4. In the Mirroring Direction integration parameter, select in which direction the incidents should be mirrored:
    • Incoming - Any changes in TOPdesk incidents (processingStatus, priority, urgency, impact) will be reflected in Cortex XSOAR incidents.
    • Outgoing - Any changes in Cortex XSOAR incidents will be reflected in TOPdesk incidents (processingStatus, priority, urgency, impact).
    • Incoming And Outgoing - Changes in Cortex XSOAR incidents and TOPdesk incidents will be reflected in both directions.
    • None - Turns off incident mirroring.
  5. The Comment Entry Tag, Work Note Entry Tag and File Entry Tag integration parameters can be used to specify which comments and attachments should be mirrored to TOPdesk. When the tag Comment Entry Tag is used, the comment is visible to the operator and the person. If the tag Work Note Entry Tag is used, the comment is only visible to the operator and the tag File Entry Tag is used to mirror files from Cortex XSOAR to TOPdesk.
  6. Optional: Check the Close Mirrored XSOAR Incident integration parameter to close the Cortex XSOAR incident when the corresponding incident is closed in TOPdesk.
  7. Optional: Check the Close Mirrored TOPdesk Incident integration parameter to close the TOPdesk incident when the corresponding Cortex XSOAR incident is closed.

Newly fetched incidents will be mirrored in the chosen direction. However, this selection does not affect existing incidents.

Important Notes
To ensure the mirroring works as expected, mappers are required, both for incoming and outgoing, to map the expected fields in Cortex XSOAR and TOPdesk.

FIQL query

A few implemented commands can get a query as a parameter. A partial list of these commands:

  • topdesk-incidents-list
  • topdesk-branches-list
  • topdesk-persons-list
  • topdesk-operators-list

While the new versions of TOPdesk all use the new FIQL query format, older versions use limited inline parameters for filters in the requests.
Specifically there are 2 versions being used:

TOPdeskRestAPI

Implements: topdesk-incidents-list

Supports FIQL query version 3.3.0 and higher.

Conveniently, TOPdeskRestAPI also provides an endpoint revealing the API version.
Therefore, once the integration is configured, it automatically translates FIQL query to
inline parameters and vice versa depending on the TOPdesk version.

SupportingFilesAPI

Implements: topdesk-branches-list, topdesk-persons-list, topdesk-operators-list

Supports FIQL query version 1.38.0 and higher.

Unlike TOPdeskRestAPI, SupportingFilesAPI does not currently provide an endpoint revealing the API version.
Therefore, this integration only supports SupportingFilesAPI version 1.38.0 and higher.

Commands

You can execute these commands from the Cortex XSOAR CLI, as part of an automation, or in a playbook.
After you successfully execute a command, a DBot message appears in the War Room with the command details.

topdesk-subcategories-list


Get list of subcategories.

Permissions

Operator: 1st/2nd line incident permissions; Category/Branch/Operator filters apply.

Person: Unrestricted access.

Base Command

topdesk-subcategories-list

Input

Argument Name Description Required
limit The limit for the amount of subcategories to store in the Context Data. -1 stores all categories. Default value is 100. Optional

Context Output

Path Type Description
TOPdesk.Subcategory.Id String Subcategory ID.
TOPdesk.Subcategory.Name String Subcategory name.
TOPdesk.Subcategory.Category.Id String Category ID of the subcategory.
TOPdesk.Subcategory.Category.Name String Category name of the subcategory.

Command Example


#### Context Example

```json
{
    "TOPdesk": {
        "Subcategories": [
            {
                "Category": {
                    "Id": "some-category-id-1",
                    "Name": "User Security"
                },
                "Id": "some-subcategory-id-1",
                "Name": "Endpoint Security"
            },
            {
                "Category": {
                    "Id": "some-category-id-1",
                    "Name": "User Security"
                },
                "Id": "some-subcategory-id-2",
                "Name": "Mobile Threat Prevention"
            }
        ]
    }
}

Human Readable Output

TOPdesk subcategories

Id Name CategoryId CategoryName
some-subcategory-id-1 Endpoint Security some-category-id User Security
some-subcategory-id-2 Mobile Threat Prevention some-category-id User Security

topdesk-categories-list


Get list of categories.

Permissions

Operator: With 1st/2nd line incident permission; Category/Branch/Operator filters apply

Person: Unrestricted access

Base Command

topdesk-categories-list

Input

Argument Name Description Required
limit The limit for the amount of categories to store in the Context Data. -1 stores all categories. Default value is 100. Optional

Context Output

Path Type Description
TOPdesk.Category.Id String Category ID.
TOPdesk.Category.Name String Category name.

Command Example


#### Context Example

```json
{
    "TOPdesk": {
        "Category": [
            {
                "Id": "some-category-id-1",
                "Name": "User Security"
            },
            {
                "Id": "some-category-id-2",
                "Name": "Network Security"
            }
        ]
    }
}

Human Readable Output

TOPdesk categories

Id Name
some-category-id-1 User Security
some-category-id-2 Network Security

topdesk-entry-types-list


Get list of entry types.

Permissions

Operator: With 1st/2nd line incident permission; Category/Branch/Operator filters apply

Person: No access

Base Command

topdesk-entry-types-list

Input

Argument Name Description Required
limit The limit for the amount of entry types to store in the Context Data. -1 stores all categories. Default value is 100. Optional

Context Output

Path Type Description
TOPdesk.EntryType.Id String EntryType ID.
TOPdesk.EntryType.Name String EntryType name.

Command Example


#### Context Example

```json
{
    "TOPdesk": {
        "EntryType": [
            {
                "Id": "some-entry-type-id-1",
                "Name": "Self Service Desk"
            },
            {
                "Id": "some-entry-type-id-2",
                "Name": "Telephone"
            }
        ]
    }
}

Human Readable Output

TOPdesk entry types

Id Name
some-entry-type-id-1 Self Service Desk
some-entry-type-id-2 Telephone

topdesk-call-types-list


Get list of entry types.

Permissions

Operator: With 1st/2nd line incident permission; Category/Branch/Operator filters apply

Person: Unrestricted access

Base Command

topdesk-call-types-list

Input

Argument Name Description Required
limit The limit for the amount of call types to store in the Context Data. -1 stores all categories. Default value is 100. Optional

Context Output

Path Type Description
TOPdesk.CallType.Id String CallType ID.
TOPdesk.CallType.Name String CallType name.

Command Example


#### Context Example

```json
{
    "TOPdesk": {
        "CallType": [
            {
                "Id": "some-call-type-id-1",
                "Name": "Request for Information"
            },
            {
                "Id": "some-call-type-id-2",
                "Name": "Problem"
            }
        ]
    }
}

Human Readable Output

TOPdesk call types

Id Name
some-call-type-id-1 Request for Information
some-call-type-id-2 Problem

topdesk-deescalation-reasons-list


Get list of deescalation reasons.

Permissions

Operator: With 1st and 2nd line incident write permission; Feature must be enabled.

Person: No access

Base Command

topdesk-deescalation-reasons-list

Input

Argument Name Description Required
limit The limit for the amount of deescalation reasons to store in the Context Data. -1 stores all categories. Default value is 100. Optional

Context Output

Path Type Description
TOPdesk.DeescalationReason.Id String Deescalation reason ID.
TOPdesk.DeescalationReason.Name String Deescalation reason name.

Command Example


#### Context Example

```json
{
    "TOPdesk": {
        "DeescalationReason": [
            {
                "Id": "some-deescalation-reason-id-1",
                "Name": "Resolves after reset"
            },
            {
                "Id": "some-deescalation-reason-id-2",
                "Name": "Workaround exists"
            }
        ]
    }
}

Human Readable Output

Id Name
some-deescalation-reason-id-1 Resolves after reset
some-deescalation-reason-id-2 Workaround exists

topdesk-escalation-reasons-list


Get list of escalation reasons.

Permissions

Operator: With 1st line incident write permission and write permission for escalating incidents

Person: No access

Base Command

topdesk-escalation-reasons-list

Input

Argument Name Description Required
limit The limit for the amount of escalation reasons to store in the Context Data. -1 stores all categories. Default value is 100. Optional

Context Output

Path Type Description
TOPdesk.EscalationReason.Id String Escalation reason ID.
TOPdesk.EscalationReason.Name String Escalation reason name.

Command Example


#### Context Example

```json
{
    "TOPdesk": {
        "EscalationReason": [
            {
                "Id": "some-escalation-reason-id-1",
                "Name": "Call from president"
            },
            {
                "Id": "some-escalation-reason-id-2",
                "Name": "Money is being lost"
            }
        ]
    }
}

Human Readable Output

TOPdesk escalation reasons

Id Name
some-escalation-reason-id-1 Call from president
some-escalation-reason-id-2 Money is being lost

topdesk-archiving-reasons-list


Get list of archiving reasons.

Permissions

Operator: Incident write permission and archiving permission; Category/Branch/Operator filters apply;

Person: No access

Base Command

topdesk-archiving-reasons-list

Input

Argument Name Description Required
limit The limit for the amount of archiving reasons to store in the Context Data. -1 stores all categories. Default value is 100. Optional

Context Output

Path Type Description
TOPdesk.ArchiveReason.Id String Archiving reason ID.
TOPdesk.ArchiveReason.Name String Archiving reason name.

Command Example


#### Context Example

```json
{
    "TOPdesk": {
        "ArchiveReason": [
            {
                "Id": "some-archive-reason-id-1",
                "Name": "No longer valid"
            },
            {
                "Id": "some-archive-reason-id-2",
                "Name": "No longer employed"
            }
        ]
    }
}

Human Readable Output

TOPdesk archiving reasons

Id Name
some-archive-reason-id-1 No longer valid
some-archive-reason-id-2 No longer employed

topdesk-persons-list


Get list of persons.

Permissions

Operator: With read permission on persons; Branch filters apply

Visible fields in response: all

Person: Only accessible when phonebook is enabled.

Visible fields in response: id, dynamicName, phoneNumber, mobileNumber, fax, email, jobTitle, department, department.id, department.name, city, departmentFree, branch, branch.id, branch.name, location, location.id, location.branch, location.branch.id, location.branch.name, location.name, location.room

Base Command

topdesk-persons-list

Input

Argument Name Description Required
start The offset at which to start listing the persons at. Must be greater or equal to 0. Default is 0. Optional
page_size The amount of persons to be returned per request. Must be between 1 and 100. Default is 10. Optional
query A FIQL search expression to filter the result. (e.g., manager.name==Alice) Available from Supporting-Files-API version 1.38.0. The FIQL query syntax is documented in the TOPdesk tutorial. Optional
fields A comma-separated list of which fields should be included. By default all fields will be included. Optional

Context Output

Path Type Description
TOPdesk.Person.Id String Person ID.
TOPdesk.Person.Status String Person status.
TOPdesk.Person.SurName String Person’s surname.
TOPdesk.Person.FirstName String Person’s first name.
TOPdesk.Person.DynamicName String Person’s dynamic name (firstName SecondName).
TOPdesk.Person.FirstInitials String Person’s first initials.
TOPdesk.Person.Prefixes String Person’s prefixes (e.g., DR, MR)
TOPdesk.Person.BirthName String Person’s birth name.
TOPdesk.Person.Title String Person’s title.
TOPdesk.Person.Gender String Person’s gender.
TOPdesk.Person.Language.Id String Person’s language ID.
TOPdesk.Person.Language.Name String Person’s language name.
TOPdesk.Person.PhoneNumber String Person’s phone number.
TOPdesk.Person.MobileNumber String Person’s mobile number.
TOPdesk.Person.Fax String Person’s fax.
TOPdesk.Person.Email String Person’s email.
TOPdesk.Person.JobTitle String Person’s job title.
TOPdesk.Person.Department Unknown Person’s department.
TOPdesk.Person.BudgetHolder Unknown Person’s budget holder.
TOPdesk.Person.EmployeeNumber String Person’s employee number.
TOPdesk.Person.NetworkLoginName String Person’s network login name.
TOPdesk.Person.MainframeLoginName String Person’s mainframe login name.
TOPdesk.Person.ClientReferenceNumber String Person’s client reference number.
TOPdesk.Person.City String Person’s city.
TOPdesk.Person.TasLoginName String Person’s tas login name.
TOPdesk.Person.ShowBranch Boolean Person’s branch visibility.
TOPdesk.Person.ShowBudgetholder Boolean Person’s budget holder visibility.
TOPdesk.Person.ShowDepartment Boolean Person’s department visibility.
TOPdesk.Person.ShowSubsidiaries Boolean Person’s subsidiaries visibility.
TOPdesk.Person.ShowAllBranches Boolean Person’s all branches visibility.
TOPdesk.Person.AuthorizeAll Boolean Person authorization on everything.
TOPdesk.Person.AuthorizeDepartment Boolean Person authorization on department.
TOPdesk.Person.AuthorizeBudgetHolder Boolean Person’s authorization on budget holder.
TOPdesk.Person.AuthorizeBranch Boolean Person’s authorization on branch.
TOPdesk.Person.AuthorizeSubsidiaryBranches Boolean Person’s authorization on subsidiary branches.
TOPdesk.Person.IsManager Boolean Is the person manager.
TOPdesk.Person.Manager Unknown Person’s manager.
TOPdesk.Person.HasAttention Boolean Does the person have attention.
TOPdesk.Person.Attention Unknown Person’s attention object.
TOPdesk.Person.AttentionComment String Person’s attention comment.
TOPdesk.Person.Creator.Id String Person’s creator ID.
TOPdesk.Person.Creator.Name String Person’s creator name.
TOPdesk.Person.CreationDate Date Person’s creation date.
TOPdesk.Person.Modifier.Id String Person’s modifier ID.
TOPdesk.Person.Modifier.Name String Person’s modifier name.
TOPdesk.Person.ModificationDate Date Person’s modification date.
TOPdesk.Person.OptionalFields1.Boolean1 Boolean Person’s optional fields1 boolean1.
TOPdesk.Person.OptionalFields1.Boolean2 Boolean Person’s optional fields1 boolean2.
TOPdesk.Person.OptionalFields1.Boolean3 Boolean Person’s optional fields1 boolean3.
TOPdesk.Person.OptionalFields1.Boolean4 Boolean Person’s optional fields1 boolean4.
TOPdesk.Person.OptionalFields1.Boolean5 Boolean Person’s optional fields1 boolean5.
TOPdesk.Person.OptionalFields1.Number1 Number Person’s optional fields1 number1.
TOPdesk.Person.OptionalFields1.Number2 Number Person’s optional fields1 number2.
TOPdesk.Person.OptionalFields1.Number3 Number Person’s optional fields1 number3.
TOPdesk.Person.OptionalFields1.Number4 Number Person’s optional fields1 number4.
TOPdesk.Person.OptionalFields1.Number5 Number Person’s optional fields1 number5.
TOPdesk.Person.OptionalFields1.Date1 Unknown Person’s optional fields1 date1.
TOPdesk.Person.OptionalFields1.Date2 Unknown Person’s optional fields1 date2.
TOPdesk.Person.OptionalFields1.Date3 Unknown Person’s optional fields1 date3.
TOPdesk.Person.OptionalFields1.Date4 Unknown Person’s optional fields1 date4.
TOPdesk.Person.OptionalFields1.Date5 Unknown Person’s optional fields1 date5.
TOPdesk.Person.OptionalFields1.Text1 String Person’s optional fields1 text1.
TOPdesk.Person.OptionalFields1.Text2 String Person’s optional fields1 text2.
TOPdesk.Person.OptionalFields1.Text3 String Person’s optional fields1 text3.
TOPdesk.Person.OptionalFields1.Text4 String Person’s optional fields1 text4.
TOPdesk.Person.OptionalFields1.Text5 String Person’s optional fields1 text5.
TOPdesk.Person.OptionalFields1.Memo1 Unknown Person’s optional fields1 memo1.
TOPdesk.Person.OptionalFields1.Memo2 Unknown Person’s optional fields1 memo2.
TOPdesk.Person.OptionalFields1.Memo3 Unknown Person’s optional fields1 memo3.
TOPdesk.Person.OptionalFields1.Memo4 Unknown Person’s optional fields1 memo4.
TOPdesk.Person.OptionalFields1.Memo5 Unknown Person’s optional fields1 memo5.
TOPdesk.Person.OptionalFields1.Searchlist1 Unknown Person’s optional fields1 searchlist1.
TOPdesk.Person.OptionalFields1.Searchlist2 Unknown Person’s optional fields1 searchlist2.
TOPdesk.Person.OptionalFields1.Searchlist3 Unknown Person’s optional fields1 searchlist3.
TOPdesk.Person.OptionalFields1.Searchlist4 Unknown Person’s optional fields1 searchlist4.
TOPdesk.Person.OptionalFields1.Searchlist5 Unknown Person’s optional fields1 searchlist5.
TOPdesk.Person.OptionalFields2.Boolean1 Boolean Person’s optional fields2 boolean1.
TOPdesk.Person.OptionalFields2.Boolean2 Boolean Person’s optional fields2 boolean2.
TOPdesk.Person.OptionalFields2.Boolean3 Boolean Person’s optional fields2 boolean3.
TOPdesk.Person.OptionalFields2.Boolean4 Boolean Person’s optional fields2 boolean4.
TOPdesk.Person.OptionalFields2.Boolean5 Boolean Person’s optional fields2 boolean5.
TOPdesk.Person.OptionalFields2.Number1 Number Person’s optional fields2 number1.
TOPdesk.Person.OptionalFields2.Number2 Number Person’s optional fields2 number2.
TOPdesk.Person.OptionalFields2.Number3 Number Person’s optional fields2 number3.
TOPdesk.Person.OptionalFields2.Number4 Number Person’s optional fields2 number4.
TOPdesk.Person.OptionalFields2.Number5 Number Person’s optional fields2 number5.
TOPdesk.Person.OptionalFields2.Date1 Unknown Person’s optional fields2 date1.
TOPdesk.Person.OptionalFields2.Date2 Unknown Person’s optional fields2 date2.
TOPdesk.Person.OptionalFields2.Date3 Unknown Person’s optional fields2 date3.
TOPdesk.Person.OptionalFields2.Date4 Unknown Person’s optional fields2 date4.
TOPdesk.Person.OptionalFields2.Date5 Unknown Person’s optional fields2 date5.
TOPdesk.Person.OptionalFields2.Text1 String Person’s optional fields2 text1.
TOPdesk.Person.OptionalFields2.Text2 String Person’s optional fields2 text2.
TOPdesk.Person.OptionalFields2.Text3 String Person’s optional fields2 text3.
TOPdesk.Person.OptionalFields2.Text4 String Person’s optional fields2 text4.
TOPdesk.Person.OptionalFields2.Text5 String Person’s optional fields2 text5.
TOPdesk.Person.OptionalFields2.Memo1 Unknown Person’s optional fields2 memo1.
TOPdesk.Person.OptionalFields2.Memo2 Unknown Person’s optional fields2 memo2.
TOPdesk.Person.OptionalFields2.Memo3 Unknown Person’s optional fields2 memo3.
TOPdesk.Person.OptionalFields2.Memo4 Unknown Person’s optional fields2 memo4.
TOPdesk.Person.OptionalFields2.Memo5 Unknown Person’s optional fields2 memo5.
TOPdesk.Person.OptionalFields2.Searchlist1 Unknown Person’s optional fields2 searchlist1.
TOPdesk.Person.OptionalFields2.Searchlist2 Unknown Person’s optional fields2 searchlist2.
TOPdesk.Person.OptionalFields2.Searchlist3 Unknown Person’s optional fields2 searchlist3.
TOPdesk.Person.OptionalFields2.Searchlist4 Unknown Person’s optional fields2 searchlist4.
TOPdesk.Person.OptionalFields2.Searchlist5 Unknown Person’s optional fields2 searchlist5.
TOPdesk.Person.PersonExtraFieldA Unknown Person’s extra field A.
TOPdesk.Person.PersonExtraFieldB Unknown Person’s extra field B.
TOPdesk.Person.DepartmentFree Unknown Person’s department free.
TOPdesk.Person.Branch.Id String Person’s branch ID.
TOPdesk.Person.Branch.Name String Person’s branch name.
TOPdesk.Person.Branch.ClientReferenceNumber String Person’s branch client reference number.
TOPdesk.Person.Branch.TimeZone String Person’s branch timezone.
TOPdesk.Person.Branch.ExtraA.Id String Person’s branch extra A ID.
TOPdesk.Person.Branch.ExtraA.Name String Person’s branch extra A name.
TOPdesk.Person.Branch.ExtraB Unknown Person’s branch extra B.
TOPdesk.Person.Branch.ExtraB.Id String Person’s branch extra B ID.
TOPdesk.Person.Branch.ExtraB.Name String Person’s branch extra B name.
TOPdesk.Person.Location Unknown Person’s location.

Command Example


#### Context Example

```json
{
    "TOPdesk": {
        "Person": [
            {
                "AttentionComment": "",
                "AuthorizeAll": false,
                "AuthorizeBranch": false,
                "AuthorizeBudgetHolder": false,
                "AuthorizeDepartment": false,
                "AuthorizeSubsidiaryBranches": false,
                "BirthName": "",
                "Branch": {
                    "ClientReferenceNumber": "1337",
                    "ExtraA": {
                        "Id": "some-extra-id",
                        "Name": "Building in progress"
                    },
                    "Id": "some-branch-id-1",
                    "Name": "HQ",
                    "TimeZone": ""
                },
                "City": "",
                "ClientReferenceNumber": "1337",
                "CreationDate": "2020-12-21T09:16:34.000+0000",
                "Creator": {
                    "Id": "some-admin-id",
                    "Name": "TOPdesk Admin"
                },
                "DynamicName": "Xsoar - User - A",
                "Email": "",
                "EmployeeNumber": "",
                "Fax": "",
                "FirstInitials": "",
                "FirstName": "Xsoar -",
                "Gender": "UNDEFINED",
                "HasAttention": false,
                "Id": "some-user-id-a",
                "IsManager": false,
                "JobTitle": "",
                "Language": {
                    "Id": "some-eng-lng-id",
                    "Name": "ENG"
                },
                "MainframeLoginName": "",
                "MobileNumber": "",
                "ModificationDate": "2020-12-21T09:20:53.000+0000",
                "Modifier": {
                    "Id": "some-admin-id",
                    "Name": "TOPdesk Admin"
                },
                "NetworkLoginName": "",
                "OptionalFields1": {
                    "Text1": "",
                    "Text2": "",
                    "Text3": "",
                    "Text4": "",
                    "Text5": ""
                },
                "OptionalFields2": {
                    "Text1": "",
                    "Text2": "",
                    "Text3": "",
                    "Text4": "",
                    "Text5": ""
                },
                "PhoneNumber": "",
                "Prefixes": "",
                "ShowAllBranches": false,
                "ShowBranch": true,
                "ShowBudgetholder": false,
                "ShowDepartment": false,
                "ShowSubsidiaries": false,
                "Status": "person",
                "SurName": "User - A",
                "TasLoginName": "xsoar-user-a",
                "Title": ""
            }
        ]
    }
}

Human Readable Output

TOPdesk persons

Id Name BranchName
some-user-id-a Xsoar - User - A XSoar - Customer - A
some-user-id-b Xsoar - User - B Xsoar - Customer - B

topdesk-operators-list


Get list of operators.

Permissions

Operator: With read permission on operators; Branch/Operator filters apply

Person: No access

Base Command

topdesk-operators-list

Input

Argument Name Description Required
start The offset at which to start listing the operators at. Must be greater or equal to 0. Default is 0. Optional
page_size The amount of operators to be returned per request. Must be between 1 and 100. Default is 10. Optional
query A FIQL search expression to filter the result. (e.g., manager.name==Alice) Available from Supporting-Files-API version 1.38.0. The FIQL query syntax is documented in the TOPdesk tutorial. Optional

Context Output

Path Type Description
TOPdesk.Operator.Id String Operator’s ID.
TOPdesk.Operator.PrincipalId String Operator’s principal ID.
TOPdesk.Operator.Status String Operator’s status.
TOPdesk.Operator.SurName String Operator’s surname.
TOPdesk.Operator.FirstName String Operator’s first name.
TOPdesk.Operator.DynamicName String Operator’s dynamic name.
TOPdesk.Operator.Initials String Operator’s initials.
TOPdesk.Operator.Prefixes String Operator’s prefixes.
TOPdesk.Operator.BirthName String Operator’s birth name.
TOPdesk.Operator.Title String Operator’s title.
TOPdesk.Operator.Gender String Operator’s gender.
TOPdesk.Operator.Language.Id String Operator’s language ID.
TOPdesk.Operator.Language.Name String Operator’s language name.
TOPdesk.Operator.Branch.Id String Operator’s branch ID.
TOPdesk.Operator.Branch.Name String Operator’s branch name.
TOPdesk.Operator.Branch.ClientReferenceNumber String Operator’s Branch Client reference number.
TOPdesk.Operator.Branch.TimeZone String Operator’s branch timezone.
TOPdesk.Operator.Branch.ExtraA.Id String Operator’s branch extra A ID.
TOPdesk.Operator.Branch.ExtraA.Name String Operator’s branch extra A name.
TOPdesk.Operator.Branch.ExtraB.Id String Operator’s branch extra B ID.
TOPdesk.Operator.Branch.ExtraB.Name String Operator’s branch extra B name.
TOPdesk.Operator.Location Unknown Operator’s location.
TOPdesk.Operator.Telephone String Operator’s telephone.
TOPdesk.Operator.MobileNumber String Operator’s mobile number.
TOPdesk.Operator.FaxNumber String Operator’s fax number.
TOPdesk.Operator.Email String Operator’s email.
TOPdesk.Operator.ExchangeAccount String Operator’s exchange account.
TOPdesk.Operator.LoginName String Operator’s login name.
TOPdesk.Operator.LoginPermission Boolean Operator’s login permission.
TOPdesk.Operator.JobTitle String Operator’s job title.
TOPdesk.Operator.Department Unknown Operator’s department.
TOPdesk.Operator.BudgetHolder Unknown Operator’s budget holder.
TOPdesk.Operator.EmployeeNumber String Operator’s employee number.
TOPdesk.Operator.HourlyRate Number Operator’s hourly rate.
TOPdesk.Operator.NetworkLoginName String Operator’s network login name.
TOPdesk.Operator.MainframeLoginName String Operator’s mainframe login name.
TOPdesk.Operator.HasAttention Boolean Operator’s has attention.
TOPdesk.Operator.Attention Unknown Operator’s attention.
TOPdesk.Operator.Comments String Operator’s comments.
TOPdesk.Operator.Installer Boolean Operator’s installer.
TOPdesk.Operator.FirstLineCallOperator Boolean Operator’s first line call operator.
TOPdesk.Operator.SecondLineCallOperator Boolean Operator’s second line call operator.
TOPdesk.Operator.ProblemManager Boolean Operator’s problem manager.
TOPdesk.Operator.ProblemOperator Boolean Operator’s problem operator.
TOPdesk.Operator.ChangeCoordinator Boolean Operator’s change coordinator.
TOPdesk.Operator.ChangeActivitiesOperator Boolean Operator’s change activities operator.
TOPdesk.Operator.RequestForChangeOperator Boolean Operator’s request for change operator.
TOPdesk.Operator.ExtensiveChangeOperator Boolean Operator’s extensive change operator.
TOPdesk.Operator.SimpleChangeOperator Boolean Operator’s simple change operator.
TOPdesk.Operator.ScenarioManager Boolean Operator’s scenario manager.
TOPdesk.Operator.PlanningActivityManager Boolean Operator’s planning activity manager.
TOPdesk.Operator.ProjectCoordinator Boolean Operator’s project coordinator.
TOPdesk.Operator.ProjectActiviesOperator Boolean Operator’s project activities operator.
TOPdesk.Operator.StockManager Boolean Operator’s stock manager.
TOPdesk.Operator.ReservationsOperator Boolean Operator’s reservations operator.
TOPdesk.Operator.ServiceOperator Boolean Operator’s service operator.
TOPdesk.Operator.ExternalHelpDeskParty Boolean Operator’s external help desk party.
TOPdesk.Operator.ContractManager Boolean Operator’s contract manager.
TOPdesk.Operator.OperationsOperator Boolean Operator’s operations operator.
TOPdesk.Operator.OperationsManager Boolean Operator’s operations manager.
TOPdesk.Operator.KnowledgeBaseManager Boolean Operator’s knowledge base manager.
TOPdesk.Operator.AccountManager Boolean Operator’s account manager.
TOPdesk.Operator.CreationDate Date Operator’s creation date.
TOPdesk.Operator.Creator.Id String Operator’s creator ID.
TOPdesk.Operator.Creator.Name String Operator’s creator name.
TOPdesk.Operator.ModificationDate Date Operator’s modification date.
TOPdesk.Operator.Modifier.Id String Operator’s modifier ID.
TOPdesk.Operator.Modifier.Name String Operator’s modifier name.
TOPdesk.Operator.OptionalFields1.Boolean1 Boolean Operator’s optional fields1 boolean1.
TOPdesk.Operator.OptionalFields1.Boolean2 Boolean Operator’s optional fields1 boolean2.
TOPdesk.Operator.OptionalFields1.Boolean3 Boolean Operator’s optional fields1 boolean3.
TOPdesk.Operator.OptionalFields1.Boolean4 Boolean Operator’s optional fields1 boolean4.
TOPdesk.Operator.OptionalFields1.Boolean5 Boolean Operator’s optional fields1 boolean5.
TOPdesk.Operator.OptionalFields1.Number1 Number Operator’s optional fields1 number1.
TOPdesk.Operator.OptionalFields1.Number2 Number Operator’s optional fields1 number2.
TOPdesk.Operator.OptionalFields1.Number3 Number Operator’s optional fields1 number3.
TOPdesk.Operator.OptionalFields1.Number4 Number Operator’s optional fields1 number4.
TOPdesk.Operator.OptionalFields1.Number5 Number Operator’s optional fields1 number5.
TOPdesk.Operator.OptionalFields1.Date1 Unknown Operator’s optional fields1 date1.
TOPdesk.Operator.OptionalFields1.Date2 Unknown Operator’s optional fields1 date2.
TOPdesk.Operator.OptionalFields1.Date3 Unknown Operator’s optional fields1 date3.
TOPdesk.Operator.OptionalFields1.Date4 Unknown Operator’s optional fields1 date4.
TOPdesk.Operator.OptionalFields1.Date5 Unknown Operator’s optional fields1 date5.
TOPdesk.Operator.OptionalFields1.Text1 String Operator’s optional fields1 text1.
TOPdesk.Operator.OptionalFields1.Text2 String Operator’s optional fields1 text2.
TOPdesk.Operator.OptionalFields1.Text3 String Operator’s optional fields1 text3.
TOPdesk.Operator.OptionalFields1.Text4 String Operator’s optional fields1 text4.
TOPdesk.Operator.OptionalFields1.Text5 String Operator’s optional fields1 text5.
TOPdesk.Operator.OptionalFields1.Memo1 Unknown Operator’s optional fields1 memo1.
TOPdesk.Operator.OptionalFields1.Memo2 Unknown Operator’s optional fields1 memo2.
TOPdesk.Operator.OptionalFields1.Memo3 Unknown Operator’s optional fields1 memo3.
TOPdesk.Operator.OptionalFields1.Memo4 Unknown Operator’s optional fields1 memo4.
TOPdesk.Operator.OptionalFields1.Memo5 Unknown Operator’s optional fields1 memo5.
TOPdesk.Operator.OptionalFields1.Searchlist1 Unknown Operator’s optional fields1 searchlist1.
TOPdesk.Operator.OptionalFields1.Searchlist2 Unknown Operator’s optional fields1 searchlist2.
TOPdesk.Operator.OptionalFields1.Searchlist3 Unknown Operator’s optional fields1 searchlist3.
TOPdesk.Operator.OptionalFields1.Searchlist4 Unknown Operator’s optional fields1 searchlist4.
TOPdesk.Operator.OptionalFields1.Searchlist5 Unknown Operator’s optional fields1 searchlist5.
TOPdesk.Operator.OptionalFields2.Boolean1 Boolean Operator’s optional fields2 boolean1.
TOPdesk.Operator.OptionalFields2.Boolean2 Boolean Operator’s optional fields2 boolean2.
TOPdesk.Operator.OptionalFields2.Boolean3 Boolean Operator’s optional fields2 boolean3.
TOPdesk.Operator.OptionalFields2.Boolean4 Boolean Operator’s optional fields2 boolean4.
TOPdesk.Operator.OptionalFields2.Boolean5 Boolean Operator’s optional fields2 boolean5.
TOPdesk.Operator.OptionalFields2.Number1 Number Operator’s optional fields2 number1.
TOPdesk.Operator.OptionalFields2.Number2 Number Operator’s optional fields2 number2.
TOPdesk.Operator.OptionalFields2.Number3 Number Operator’s optional fields2 number3.
TOPdesk.Operator.OptionalFields2.Number4 Number Operator’s optional fields2 number4.
TOPdesk.Operator.OptionalFields2.Number5 Number Operator’s optional fields2 number5.
TOPdesk.Operator.OptionalFields2.Date1 Unknown Operator’s optional fields2 date1.
TOPdesk.Operator.OptionalFields2.Date2 Unknown Operator’s optional fields2 date2.
TOPdesk.Operator.OptionalFields2.Date3 Unknown Operator’s optional fields2 date3.
TOPdesk.Operator.OptionalFields2.Date4 Unknown Operator’s optional fields2 date4.
TOPdesk.Operator.OptionalFields2.Date5 Unknown Operator’s optional fields2 date5.
TOPdesk.Operator.OptionalFields2.Text1 String Operator’s optional fields2 text1.
TOPdesk.Operator.OptionalFields2.Text2 String Operator’s optional fields2 text2.
TOPdesk.Operator.OptionalFields2.Text3 String Operator’s optional fields2 text3.
TOPdesk.Operator.OptionalFields2.Text4 String Operator’s optional fields2 text4.
TOPdesk.Operator.OptionalFields2.Text5 String Operator’s optional fields2 text5.
TOPdesk.Operator.OptionalFields2.Memo1 Unknown Operator’s optional fields2 memo1.
TOPdesk.Operator.OptionalFields2.Memo2 Unknown Operator’s optional fields2 memo2.
TOPdesk.Operator.OptionalFields2.Memo3 Unknown Operator’s optional fields2 memo3.
TOPdesk.Operator.OptionalFields2.Memo4 Unknown Operator’s optional fields2 memo4.
TOPdesk.Operator.OptionalFields2.Memo5 Unknown Operator’s optional fields2 memo5.
TOPdesk.Operator.OptionalFields2.Searchlist1 Unknown Operator’s optional fields2 searchlist1.
TOPdesk.Operator.OptionalFields2.Searchlist2 Unknown Operator’s optional fields2 searchlist2.
TOPdesk.Operator.OptionalFields2.Searchlist3 Unknown Operator’s optional fields2 searchlist3.
TOPdesk.Operator.OptionalFields2.Searchlist4 Unknown Operator’s optional fields2 searchlist4.
TOPdesk.Operator.OptionalFields2.Searchlist5 Unknown Operator’s optional fields2 searchlist5.

Command Example


#### Context Example

```json
{
    "TOPdesk": {
        "Operator": {
            "AccountManager": false,
            "BirthName": "",
            "Branch": {
                "ClientReferenceNumber": "1337",
                "ExtraA": {
                    "Id": "some-extra-id",
                    "Name": "Building in progress"
                },
                "Id": "some-branch-id-1",
                "Name": "HQ",
                "TimeZone": ""
            },
            "ChangeActivitiesOperator": false,
            "ChangeCoordinator": false,
            "Comments": "",
            "ContractManager": false,
            "CreationDate": "2020-12-21T09:24:35.000+0000",
            "Creator": {
                "Id": "some-admin-id",
                "Name": "TOPdesk Admin"
            },
            "DynamicName": "Xsoar - Operator",
            "Email": "xsoar-dev@example.com",
            "EmployeeNumber": "",
            "ExchangeAccount": "xsoar-dev@example.com",
            "ExtensiveChangeOperator": false,
            "ExternalHelpDeskParty": false,
            "FaxNumber": "",
            "FirstLineCallOperator": true,
            "FirstName": "Xsoar -",
            "Gender": "UNDEFINED",
            "HasAttention": false,
            "Id": "some-operator-id",
            "Initials": "",
            "Installer": false,
            "JobTitle": "",
            "KnowledgeBaseManager": false,
            "Language": {
                "Id": "some-eng-lng-id",
                "Name": "ENG"
            },
            "LoginName": "XSOAR-OPERATOR",
            "LoginPermission": true,
            "MainframeLoginName": "",
            "MobileNumber": "",
            "ModificationDate": "2020-12-21T09:24:35.000+0000",
            "Modifier": {
                "Id": "some-admin-id",
                "Name": "TOPdesk Admin"
            },
            "NetworkLoginName": "",
            "OperationsManager": false,
            "OperationsOperator": false,
            "OptionalFields1": {
                "Text1": "",
                "Text2": "",
                "Text3": "",
                "Text4": "",
                "Text5": ""
            },
            "OptionalFields2": {
                "Text1": "",
                "Text2": "",
                "Text3": "",
                "Text4": "",
                "Text5": ""
            },
            "PlanningActivityManager": false,
            "Prefixes": "",
            "PrincipalId": "some-principal-id",
            "ProblemManager": false,
            "ProblemOperator": false,
            "ProjectActiviesOperator": false,
            "ProjectCoordinator": false,
            "RequestForChangeOperator": false,
            "ReservationsOperator": false,
            "ScenarioManager": false,
            "SecondLineCallOperator": true,
            "ServiceOperator": false,
            "SimpleChangeOperator": false,
            "Status": "operator",
            "StockManager": false,
            "SurName": "Operator",
            "Telephone": "",
            "Title": ""
        }
    }
}

Human Readable Output

TOPdesk operators

Id Name BranchName
some-operator-id Xsoar - Operator HQ

topdesk-branches-list


Get list of branches.

Permissions

Operator: Branch filters apply

Person: Only accessible when branches are editable in the SSP. Returns only ID and name.

Base Command

topdesk-branches-list

Input

Argument Name Description Required
start The offset at which to start listing the persons at. Must be greater or equal to 0. Default is 0. Optional
page_size The amount of persons to be returned per request. Must be between 1 and 100. Default is 10. Optional
query A FIQL search expression to filter the result. (e.g., address.country.name=NL) Available from Supporting-Files-API version 1.38.0. The FIQL query syntax is documented in the TOPdesk tutorial. Optional
fields A comma-separated list of which fields should be included. By default fields ID and name will be included. Optional

Context Output

Path Type Description
TOPdesk.Branch.Id String Branch’s ID.
TOPdesk.Branch.Status String Branch’s status.
TOPdesk.Branch.Name String Branch’s name.
TOPdesk.Branch.Specification String Branch’s specification.
TOPdesk.Branch.ClientReferenceNumber String Branch’s client reference number.
TOPdesk.Branch.TimeZone String Branch’s timezone.
TOPdesk.Branch.ExtraA.Id String Branch’s extra A ID.
TOPdesk.Branch.ExtraA.Name String Branch’s extra A name.
TOPdesk.Branch.ExtraB.Id String Branch’s extra B ID.
TOPdesk.Branch.ExtraB.Name String Branch’s extra B name.
TOPdesk.Branch.Phone String Branch’s phone.
TOPdesk.Branch.Fax String Branch’s fax.
TOPdesk.Branch.Address.Country.Id String Branch’s address country ID.
TOPdesk.Branch.Address.Country.Name String Branch’s address country name.
TOPdesk.Branch.Address.Street String Branch’s address street.
TOPdesk.Branch.Address.Number String Branch’s address number.
TOPdesk.Branch.Address.County String Branch’s address county.
TOPdesk.Branch.Address.City String Branch’s address city.
TOPdesk.Branch.Address.Postcode String Branch’s address postcode.
TOPdesk.Branch.Address.AddressMemo String Branch’s address memo.
TOPdesk.Branch.Address.AddressType String Branch’s address type.
TOPdesk.Branch.Email String Branch’s email.
TOPdesk.Branch.Website String Branch’s website.
TOPdesk.Branch.PostalAddress.Country.Id String Branch’s postal address country ID.
TOPdesk.Branch.PostalAddress.Country.Name String Branch’s postal address country name.
TOPdesk.Branch.PostalAddress.Street String Branch’s postal address street.
TOPdesk.Branch.PostalAddress.Number String Branch’s postal address number.
TOPdesk.Branch.PostalAddress.County String Branch’s postal address county.
TOPdesk.Branch.PostalAddress.City String Branch’s postal address city.
TOPdesk.Branch.PostalAddress.Postcode String Branch’s postal address postcode.
TOPdesk.Branch.PostalAddress.AddressMemo String Branch’s postal address memo.
TOPdesk.Branch.PostalAddress.AddressType String Branch’s postal address type.
TOPdesk.Branch.BranchType String Branch’s branch type.
TOPdesk.Branch.HeadBranch.Id String Branch’s head branch ID.
TOPdesk.Branch.HeadBranch.Name String Branch’s head branch name.
TOPdesk.Branch.MembershipNumber String Branch’s membership number.
TOPdesk.Branch.AccountManager.Id String Branch’s account manager ID.
TOPdesk.Branch.AccountManager.Name String Branch’s account manager name.
TOPdesk.Branch.Contact.Id String Branch’s contact ID.
TOPdesk.Branch.Contact.Name String Branch’s contact name.
TOPdesk.Branch.VatNumber String Branch’s VAT number.
TOPdesk.Branch.SurfaceArea Number Branch’s surface area.
TOPdesk.Branch.Volume Number Branch’s volume.
TOPdesk.Branch.Attention.Id String Branch’s attention ID.
TOPdesk.Branch.Attention.Name String Branch’s attention name.
TOPdesk.Branch.AttentionComment String Branch’s attention comment.
TOPdesk.Branch.AdditionalInfo String Branch’s additional info.
TOPdesk.Branch.ServiceWindowOption String Branch’s service window option.
TOPdesk.Branch.ServiceWindow.Id String Branch’s service window ID.
TOPdesk.Branch.ServiceWindow.Name String Branch’s service window name window name.
TOPdesk.Branch.RealEstate.RegistryReference String Branch’s real estate registry reference.
TOPdesk.Branch.RealEstate.OwnerName String Branch’s real estate owner name.
TOPdesk.Branch.RealEstate.OwnerMobile String Branch’s real estate owner mobile.
TOPdesk.Branch.RealEstate.OwnerTelephone String Branch’s real estate owner telephone.
TOPdesk.Branch.RealEstate.OwnerEmail String Branch’s real estate owner email.
TOPdesk.Branch.RealEstate.DesignatedUse.Id String Branch’s real estate designated use ID.
TOPdesk.Branch.RealEstate.DesignatedUse.Name String Branch’s real estate designated use name.
TOPdesk.Branch.RealEstate.ListedBuilding.Id String Branch’s real estate listed building ID.
TOPdesk.Branch.RealEstate.ListedBuilding.Name String Branch’s real estate listed building name.
TOPdesk.Branch.RealEstate.ConstructionYear Number Branch’s real estate construction year.
TOPdesk.Branch.RealEstate.AcquisitionYear Number Branch’s real estate acquisition year.
TOPdesk.Branch.RealEstate.AcquisitionPrice Number Branch’s real estate acquisition price.
TOPdesk.Branch.RealEstate.EnergyPerformance.Id String Branch’s real estate energy performance ID.
TOPdesk.Branch.RealEstate.EnergyPerformance.Name String Branch’s real estate energy performance name.
TOPdesk.Branch.RealEstate.EnergyPerformanceMeasurementDate Date Branch’s real estate energy performance measurement date.
TOPdesk.Branch.RealEstate.EnvironmentalImpact.Id String Branch’s real estate environmental impact ID.
TOPdesk.Branch.RealEstate.EnvironmentalImpact.Name String Branch’s real estate environmental impact name.
TOPdesk.Branch.RealEstate.EnvironmentalImpactMeasurementDate Date Branch’s real estate environmental impact measurement date.
TOPdesk.Branch.RealEstate.BuildingLevelEPC.Id String Branch’s real estate building level EPC ID.
TOPdesk.Branch.RealEstate.BuildingLevelEPC.Name String Branch’s real estate building level EPC name.
TOPdesk.Branch.RealEstate.TotalAcquisitionCost Number Branch’s real estate total acquisition cost.
TOPdesk.Branch.RealEstate.PropertyValuation Number Branch’s real estate property valuation.
TOPdesk.Branch.RealEstate.ResidualValue Number Branch’s real estate residual value.
TOPdesk.Branch.RealEstate.AnnualDepreciation Number Branch’s real estate annual depreciation.
TOPdesk.Branch.RealEstate.DepreciationPeriod Number Branch’s real estate depreciation period.
TOPdesk.Branch.RealEstate.LiquidationValue Number Branch’s real estate liquidation value.
TOPdesk.Branch.RealEstate.LiquidationValueSurveyDate Date Branch’s real estate liquidation value survey date.
TOPdesk.Branch.RealEstate.LandValue Number Branch’s real estate land value.
TOPdesk.Branch.RealEstate.LandValueSurveyDate Date Branch’s real estate land value survey date.
TOPdesk.Branch.RealEstate.MarketValue Number Branch’s real estate market value.
TOPdesk.Branch.RealEstate.MarketValueSurveyDate Date Branch’s real estate market value survey date.
TOPdesk.Branch.RealEstate.RentalValue Number Branch’s real estate rental value.
TOPdesk.Branch.RealEstate.RentalValueSurveyDate Date Branch’s real estate rental value survey date.
TOPdesk.Branch.RealEstate.RebuildingValue Number Branch’s real estate rebuilding value.
TOPdesk.Branch.RealEstate.RebuildingValueSurveyDate Date Branch’s real estate rebuilding value survey date.
TOPdesk.Branch.OptionalFields1.Boolean1 Boolean Branch’s optional fields1 boolean1.
TOPdesk.Branch.OptionalFields1.Boolean2 Boolean Branch’s optional fields1 boolean2.
TOPdesk.Branch.OptionalFields1.Boolean3 Boolean Branch’s optional fields1 boolean3.
TOPdesk.Branch.OptionalFields1.Boolean4 Boolean Branch’s optional fields1 boolean4.
TOPdesk.Branch.OptionalFields1.Boolean5 Boolean Branch’s optional fields1 boolean5.
TOPdesk.Branch.OptionalFields1.Number1 Number Branch’s optional fields1 number1.
TOPdesk.Branch.OptionalFields1.Number2 Number Branch’s optional fields1 number2.
TOPdesk.Branch.OptionalFields1.Number3 Number Branch’s optional fields1 number3.
TOPdesk.Branch.OptionalFields1.Number4 Number Branch’s optional fields1 number4.
TOPdesk.Branch.OptionalFields1.Number5 Number Branch’s optional fields1 number5.
TOPdesk.Branch.OptionalFields1.Date1 Date Branch’s optional fields1 date1.
TOPdesk.Branch.OptionalFields1.Date2 Date Branch’s optional fields1 date2.
TOPdesk.Branch.OptionalFields1.Date3 Date Branch’s optional fields1 date3.
TOPdesk.Branch.OptionalFields1.Date4 Date Branch’s optional fields1 date4.
TOPdesk.Branch.OptionalFields1.Date5 Date Branch’s optional fields1 date5.
TOPdesk.Branch.OptionalFields1.Text1 String Branch’s optional fields1 text1.
TOPdesk.Branch.OptionalFields1.Text2 String Branch’s optional fields1 text2.
TOPdesk.Branch.OptionalFields1.Text3 String Branch’s optional fields1 text3.
TOPdesk.Branch.OptionalFields1.Text4 String Branch’s optional fields1 text4.
TOPdesk.Branch.OptionalFields1.Text5 String Branch’s optional fields1 text5.
TOPdesk.Branch.OptionalFields1.Memo1 String Branch’s optional fields1 memo1.
TOPdesk.Branch.OptionalFields1.Memo2 String Branch’s optional fields1 memo2.
TOPdesk.Branch.OptionalFields1.Memo3 String Branch’s optional fields1 memo3.
TOPdesk.Branch.OptionalFields1.Memo4 String Branch’s optional fields1 memo4.
TOPdesk.Branch.OptionalFields1.Memo5 String Branch’s optional fields1 memo5.
TOPdesk.Branch.OptionalFields1.Searchlist1.Id String Branch’s optional fields1 searchlist1 ID.
TOPdesk.Branch.OptionalFields1.Searchlist1.Name String Branch’s optional fields1 searchlist1 name.
TOPdesk.Branch.OptionalFields1.Searchlist2.Id String Branch’s optional fields1 searchlist2 ID.
TOPdesk.Branch.OptionalFields1.Searchlist2.Name String Branch’s optional fields1 searchlist2 name.
TOPdesk.Branch.OptionalFields1.Searchlist3.Id String Branch’s optional fields1 searchlist3 ID.
TOPdesk.Branch.OptionalFields1.Searchlist3.Name String Branch’s optional fields1 searchlist3 name.
TOPdesk.Branch.OptionalFields1.Searchlist4.Id String Branch’s optional fields1 searchlist4 ID.
TOPdesk.Branch.OptionalFields1.Searchlist4.Name String Branch’s optional fields1 searchlist4 name.
TOPdesk.Branch.OptionalFields1.Searchlist5.Id String Branch’s optional fields1 searchlist5 ID.
TOPdesk.Branch.OptionalFields1.Searchlist5.Name String Branch’s optional fields1 searchlist5 name.
TOPdesk.Branch.OptionalFields2.Boolean1 Boolean Branch’s optional fields2 boolean1.
TOPdesk.Branch.OptionalFields2.Boolean2 Boolean Branch’s optional fields2 boolean2.
TOPdesk.Branch.OptionalFields2.Boolean3 Boolean Branch’s optional fields2 boolean3.
TOPdesk.Branch.OptionalFields2.Boolean4 Boolean Branch’s optional fields2 boolean4.
TOPdesk.Branch.OptionalFields2.Boolean5 Boolean Branch’s optional fields2 boolean5.
TOPdesk.Branch.OptionalFields2.Number1 Number Branch’s optional fields2 number1.
TOPdesk.Branch.OptionalFields2.Number2 Number Branch’s optional fields2 number2.
TOPdesk.Branch.OptionalFields2.Number3 Number Branch’s optional fields2 number3.
TOPdesk.Branch.OptionalFields2.Number4 Number Branch’s optional fields2 number4.
TOPdesk.Branch.OptionalFields2.Number5 Number Branch’s optional fields2 number5.
TOPdesk.Branch.OptionalFields2.Date1 Date Branch’s optional fields2 date1.
TOPdesk.Branch.OptionalFields2.Date2 Date Branch’s optional fields2 date2.
TOPdesk.Branch.OptionalFields2.Date3 Date Branch’s optional fields2 date3.
TOPdesk.Branch.OptionalFields2.Date4 Date Branch’s optional fields2 date4.
TOPdesk.Branch.OptionalFields2.Date5 Date Branch’s optional fields2 date5.
TOPdesk.Branch.OptionalFields2.Text1 String Branch’s optional fields2 text1.
TOPdesk.Branch.OptionalFields2.Text2 String Branch’s optional fields2 text2.
TOPdesk.Branch.OptionalFields2.Text3 String Branch’s optional fields2 text3.
TOPdesk.Branch.OptionalFields2.Text4 String Branch’s optional fields2 text4.
TOPdesk.Branch.OptionalFields2.Text5 String Branch’s optional fields2 text5.
TOPdesk.Branch.OptionalFields2.Memo1 String Branch’s optional fields2 memo1.
TOPdesk.Branch.OptionalFields2.Memo2 String Branch’s optional fields2 memo2.
TOPdesk.Branch.OptionalFields2.Memo3 String Branch’s optional fields2 memo3.
TOPdesk.Branch.OptionalFields2.Memo4 String Branch’s optional fields2 memo4.
TOPdesk.Branch.OptionalFields2.Memo5 String Branch’s optional fields2 memo5.
TOPdesk.Branch.OptionalFields2.Searchlist1.Id String Branch’s optional fields2 searchlist1 ID.
TOPdesk.Branch.OptionalFields2.Searchlist1.Name String Branch’s optional fields2 searchlist1 name.
TOPdesk.Branch.OptionalFields2.Searchlist2.Id String Branch’s optional fields2 searchlist2 ID.
TOPdesk.Branch.OptionalFields2.Searchlist2.Name String Branch’s optional fields2 searchlist2 name.
TOPdesk.Branch.OptionalFields2.Searchlist3.Id String Branch’s optional fields2 searchlist3 ID.
TOPdesk.Branch.OptionalFields2.Searchlist3.Name String Branch’s optional fields2 searchlist3 name.
TOPdesk.Branch.OptionalFields2.Searchlist4.Id String Branch’s optional fields2 searchlist4 ID.
TOPdesk.Branch.OptionalFields2.Searchlist4.Name String Branch’s optional fields2 searchlist4 name.
TOPdesk.Branch.OptionalFields2.Searchlist5.Id String Branch’s optional fields2 searchlist5 ID.
TOPdesk.Branch.OptionalFields2.Searchlist5.Name String Branch’s optional fields2 searchlist5 name.
TOPdesk.Branch.Notes String Branch’s notes.
TOPdesk.Branch.Creator.Id String Branch’s creator ID.
TOPdesk.Branch.Creator.Name String Branch’s creator name.
TOPdesk.Branch.CreationDate Date Branch’s creation date.
TOPdesk.Branch.Modifier.Id String Branch’s modifier ID.
TOPdesk.Branch.Modifier.Name String Branch’s modifier name.
TOPdesk.Branch.ModificationDate Date Branch’s modification date.
TOPdesk.Branch.HasAttention Boolean Branch’s has attention.

Command Example

!topdesk-branches-list start=5

Context Example

{
    "TOPdesk": {
        "Branch": [
          {
            "Id": "some-branch-id",
            "Status": "Active",
            "Name": "HeadQuarters",
            "Specification": "string",
            "ClientReferenceNumber": "string",
            "TimeZone": "string",
            "ExtraA": {
              "Id": "some-id-76",
              "Name": "string"
            },
            "ExtraB": {
              "Id": "some-id-98",
              "Name": "string"
            },
            "Phone": "1337",
            "Fax": "string",
            "Address": {
              "Country": {
                "Id": "some-id-78",
                "Name": "string"
              },
              "Street": "Featherstone Street",
              "Number": "49",
              "County": "Greater London",
              "City": "London",
              "Postcode": "EC1Y 8SY",
              "AddressMemo": "49 Featherstone Street\nLONDON\nEC1Y 8SY\nUNITED KINGDOM",
              "AddressType": "GB"
            },
            "Email": "string",
            "Website": "some-domain.com",
            "PostalAddress": {
              "Country": {
                "Id": "some-id-56",
                "Name": "string"
              },
              "Street": "Featherstone Street",
              "Number": "49",
              "County": "Greater London",
              "City": "London",
              "Postcode": "EC1Y 8SY",
              "AddressMemo": "49 Featherstone Street\nLONDON\nEC1Y 8SY\nUNITED KINGDOM",
              "AddressType": "GB"
            },
            "BranchType": "string",
            "HeadBranch": {
              "Id": "some-id-45",
              "Name": "string"
            },
            "MembershipNumber": "string",
            "AccountManager": {
              "Id": "some-id-45",
              "Name": "string"
            },
            "Contact": {
              "Id": "some-id-34",
              "Name": "string"
            },
            "VatNumber": "string",
            "SurfaceArea": 0,
            "Volume": 0,
            "Attention": {
              "Id": "some-id-23",
              "Name": "string"
            },
            "AttentionComment": "string",
            "AdditionalInfo": "string",
            "ServiceWindowOption": "string",
            "ServiceWindow": {
              "Id": "some-id-12",
              "Name": "string"
            },
            "RealEstate": {
              "RegistryReference": "string",
              "OwnerName": "string",
              "OwnerMobile": "string",
              "OwnerTelephone": "string",
              "OwnerEmail": "string",
              "DesignatedUse": {
                "Id": "some-id-99",
                "Name": "string"
              },
              "ListedBuilding": {
                "Id": "some-id-88",
                "Name": "string"
              },
              "ConstructionYear": 0,
              "AcquisitionYear": 0,
              "AcquisitionPrice": 0,
              "EnergyPerformance": {
                "Id": "some-id-77",
                "Name": "string"
              },
              "EnergyPerformanceMeasurementDate": "2021-03-24T12:39:50.643Z",
              "EnvironmentalImpact": {
                "Id": "some-id-66",
                "Name": "string"
              },
              "EnvironmentalImpactMeasurementDate": "2021-03-24T12:39:50.643Z",
              "BuildingLevelEPC": {
                "Id": "some-id-55",
                "Name": "string"
              },
              "TotalAcquisitionCost": 0,
              "PropertyValuation": 0,
              "ResidualValue": 0,
              "AnnualDepreciation": 0,
              "DepreciationPeriod": 0,
              "LiquidationValue": 0,
              "LiquidationValueSurveyDate": "2021-03-24T12:39:50.643Z",
              "LandValue": 0,
              "LandValueSurveyDate": "2021-03-24T12:39:50.643Z",
              "MarketValue": 0,
              "MarketValueSurveyDate": "2021-03-24T12:39:50.643Z",
              "RentalValue": 0,
              "RentalValueSurveyDate": "2021-03-24T12:39:50.643Z",
              "RebuildingValue": 0,
              "RebuildingValueSurveyDate": "2021-03-24T12:39:50.643Z"
            },
            "OptionalFields1": {
              "Boolean1": true,
              "Boolean2": true,
              "Boolean3": true,
              "Boolean4": true,
              "Boolean5": true,
              "Number1": 0,
              "Number2": 0,
              "Number3": 0,
              "Number4": 0,
              "Number5": 0,
              "Date1": "2021-03-24T12:39:50.643Z",
              "Date2": "2021-03-24T12:39:50.643Z",
              "Date3": "2021-03-24T12:39:50.643Z",
              "Date4": "2021-03-24T12:39:50.643Z",
              "Date5": "2021-03-24T12:39:50.643Z",
              "Text1": "string",
              "Text2": "string",
              "Text3": "string",
              "Text4": "string",
              "Text5": "string",
              "Memo1": "string",
              "Memo2": "string",
              "Memo3": "string",
              "Memo4": "string",
              "Memo5": "string",
              "Searchlist1": {
                "Id": "some-id-55",
                "Name": "string"
              },
              "Searchlist2": {
                "Id": "some-id-44",
                "Name": "string"
              },
              "Searchlist3": {
                "Id": "some-id-33",
                "Name": "string"
              },
              "Searchlist4": {
                "Id": "some-id-22",
                "Name": "string"
              },
              "searchlist5": {
                "Id": "some-id-11",
                "Name": "string"
              }
            },
            "optionalFields2": {
              "Boolean1": true,
              "Boolean2": true,
              "Boolean3": true,
              "Boolean4": true,
              "Boolean5": true,
              "Number1": 0,
              "Number2": 0,
              "Number3": 0,
              "Number4": 0,
              "Number5": 0,
              "Date1": "2021-03-24T12:39:50.643Z",
              "Date2": "2021-03-24T12:39:50.643Z",
              "Date3": "2021-03-24T12:39:50.643Z",
              "Date4": "2021-03-24T12:39:50.643Z",
              "Date5": "2021-03-24T12:39:50.643Z",
              "Text1": "string",
              "Text2": "string",
              "Text3": "string",
              "Text4": "string",
              "Text5": "string",
              "Memo1": "string",
              "Memo2": "string",
              "Memo3": "string",
              "Memo4": "string",
              "Memo5": "string",
              "Searchlist1": {
                "Id": "some-id-6",
                "Name": "string"
              },
              "Searchlist2": {
                "Id": "some-id-5",
                "Name": "string"
              },
              "Searchlist3": {
                "Id": "some-id-4",
                "Name": "string"
              },
              "Searchlist4": {
                "Id": "some-id-3",
                "Name": "string"
              },
              "searchlist5": {
                "Id": "some-id-2",
                "Name": "string"
              }
            },
            "Notes": "string",
            "Creator": {
              "Id": "some-id-1",
              "name": "string"
            },
            "CreationDate": "2021-03-24T12:39:50.644Z",
            "Modifier": {
              "Id": "some-id",
              "Name": "string"
            },
            "ModificationDate": "2021-03-24T12:39:50.644Z",
            "HasAttention": true
          }
        ]
    }
}

Human Readable Output

TOPdesk branches

Id Status Name Phone Website Address
some-branch-id Active HeadQuarters 1337 some-domain.com 49 Featherstone Street\nLONDON\nEC1Y 8SY\nUNITED KINGDOM

topdesk-incidents-list


Get list of incidents.

Permissions

Operator: With read permission on 1st/2nd line incident; Category/Branch/Operator filters apply

Person: Accessible; Person visibility settings apply

Base Command

topdesk-incidents-list

Input

Argument Name Description Required
start The offset at which to start listing the operators at. Must be greater or equal to 0. Default is 0. Optional
page_size The amount of operators to be returned per request. Must be between 1 and 100. Default is 10. Optional
query A search expression to filter the result. The FIQL query syntax will be used if ‘Use new query option’ in the settings is checked, otherwise old style query will be used. The FIQL query syntax is documented in the in the TOPdesk tutorial. TOPdesk tutorial. (e.g., (FIQL) status==firsLine) (e.g., (old style) status=firsLine). Optional
incident_id The ID of the incident to retrieve, overrides any other arguments. Optional
incident_number The number of the incident to retrieve, overrides any other argument but incident_id. Optional
status. Retrieve only the incidents of the given status. firstLine/secondLine/partial. Possible values are: firstLine, secondLine, partial. Optional
caller_id Retrieve only the incidents of the given caller ID. Optional
branch_id Retrieve only the incidents of the given branch ID. Optional
category Retrieve only the incidents of the given category. Supported only with new FIQL type queries. Optional
subcategory Retrieve only the incidents of the given subcategory. Supported only with new FIQL type queries. Optional
call_type Retrieve only the incidents of the given call type. Supported only with new FIQL type queries. Optional
entry_type Retrieve only the incidents of the given entry type. Supported only with new FIQL type queries. Optional
fields A comma-separated list of which fields should be returned. By default all fields will be returned. Optional

Context Output

Path Type Description
TOPdesk.Incident.Id String TOPdesk incident’s ID.
TOPdesk.Incident.Status String TOPdesk incident’s status.
TOPdesk.Incident.Number String TOPdesk incident’s number.
TOPdesk.Incident.Request String TOPdesk incident’s request.
TOPdesk.Incident.Requests String TOPdesk incident’s requests.
TOPdesk.Incident.Action String TOPdesk incident’s action.
TOPdesk.Incident.Attachments String TOPdesk incident’s attachments.
TOPdesk.Incident.Caller.Id String TOPdesk incident’s caller ID.
TOPdesk.Incident.Caller.DynamicName String TOPdesk incident’s caller dynamic name.
TOPdesk.Incident.Caller.Branch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.Caller.Branch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.Caller.Branch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.Caller.Branch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.Caller.Branch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.Caller.Branch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.CallerBranch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.CallerBranch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.CallerBranch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.CallerBranch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.CallerBranch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.CallerBranch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.BranchExtraFieldA Unknown TOPdesk incident’s branch extra field A.
TOPdesk.Incident.BranchExtraFieldB Unknown TOPdesk incident’s branch extra field B.
TOPdesk.Incident.BriefDescription String TOPdesk incident’s brief description.
TOPdesk.Incident.ExternalNumber String TOPdesk incident’s external number.
TOPdesk.Incident.Category.Id String TOPdesk incident’s category ID.
TOPdesk.Incident.Category.Name String TOPdesk incident’s category name.
TOPdesk.Incident.Subcategory.Id String TOPdesk incident’s subcategory ID.
TOPdesk.Incident.Subcategory.Name String TOPdesk incident’s subcategory name.
TOPdesk.Incident.CallType.Id String TOPdesk incident’s call type ID.
TOPdesk.Incident.CallType.Name String TOPdesk incident’s call type name.
TOPdesk.Incident.EntryType.Id String TOPdesk incident’s entry type ID.
TOPdesk.Incident.EntryType.Name String TOPdesk incident’s entry type name.
TOPdesk.Incident.Object.Id String TOPdesk incident’s object ID.
TOPdesk.Incident.Object.Name String TOPdesk incident’s object name.
TOPdesk.Incident.Object.Type.Id String TOPdesk incident’s object type ID.
TOPdesk.Incident.Object.Type.Name String TOPdesk incident’s object type name.
TOPdesk.Incident.Object.Make.Id String TOPdesk incident’s object make ID.
TOPdesk.Incident.Object.Make.Name String TOPdesk incident’s object make name.
TOPdesk.Incident.Object.Model.Id String TOPdesk incident’s object model ID.
TOPdesk.Incident.Object.Model.Name String TOPdesk incident’s object model name.
TOPdesk.Incident.Object.Branch.Id String TOPdesk incident’s object branch ID.
TOPdesk.Incident.Object.Branch.Name String TOPdesk incident’s object branch name.
TOPdesk.Incident.Object.Location.Id String TOPdesk incident’s object location ID.
TOPdesk.Incident.Object.Location.Name String TOPdesk incident’s object location name.
TOPdesk.Incident.Object.Specification String TOPdesk incident’s object specification.
TOPdesk.Incident.Object.SerialNumber String TOPdesk incident’s object serial number.
TOPdesk.Incident.Asset.Id String TOPdesk incident’s asset ID.
TOPdesk.Incident.Branch.ClientReferenceNumber String TOPdesk incident’s branch client reference number.
TOPdesk.Incident.Branch.TimeZone String TOPdesk incident’s branch timezone.
TOPdesk.Incident.Branch.ExtraA Unknown TOPdesk incident’s branch extra A.
TOPdesk.Incident.Branch.ExtraB Unknown TOPdesk incident’s branch extra B.
TOPdesk.Incident.Branch.Id String TOPdesk incident’s branch ID.
TOPdesk.Incident.Branch.Name String TOPdesk incident’s branch name.
TOPdesk.Incident.Location.Id String TOPdesk incident’s location ID.
TOPdesk.Incident.Location.Branch.ClientReferenceNumber String TOPdesk incident’s location branch client reference number.
TOPdesk.Incident.Location.Branch.TimeZone String TOPdesk incident’s location branch timezone.
TOPdesk.Incident.Location.Branch.ExtraA Unknown TOPdesk incident’s location branch extra A.
TOPdesk.Incident.Location.Branch.ExtraB Unknown TOPdesk incident’s location branch extra B.
TOPdesk.Incident.Location.Branch.Id String TOPdesk incident’s location branch ID.
TOPdesk.Incident.Location.Branch.Name String TOPdesk incident’s location branch name.
TOPdesk.Incident.Location.Name String TOPdesk incident’s location name.
TOPdesk.Incident.Location.Room String TOPdesk incident’s location room.
TOPdesk.Incident.Impact.Id String TOPdesk incident’s impact ID.
TOPdesk.Incident.Impact.Name String TOPdesk incident’s impact name.
TOPdesk.Incident.Urgency.Id String TOPdesk incident’s urgency ID.
TOPdesk.Incident.Urgency.Name String TOPdesk incident’s urgency name.
TOPdesk.Incident.Priority.Id String TOPdesk incident’s priority ID.
TOPdesk.Incident.Priority.Name String TOPdesk incident’s priority name.
TOPdesk.Incident.Duration.Id String TOPdesk incident’s duration ID.
TOPdesk.Incident.Duration.Name String TOPdesk incident’s duration name.
TOPdesk.Incident.TargetDate Date TOPdesk incident’s target date.
TOPdesk.Incident.Sla.Id String TOPdesk incident’s sla ID.
TOPdesk.Incident.OnHold Boolean TOPdesk incident’s on hold.
TOPdesk.Incident.OnHoldDate Unknown TOPdesk incident’s on hold date.
TOPdesk.Incident.OnHoldDuration Number TOPdesk incident’s on hold duration.
TOPdesk.Incident.FeedbackMessage Unknown TOPdesk incident’s feedback message.
TOPdesk.Incident.FeedbackRating Unknown TOPdesk incident’s feedback rating.
TOPdesk.Incident.Operator.Id String TOPdesk incident’s operator ID.
TOPdesk.Incident.Operator.Status String TOPdesk incident’s operator status.
TOPdesk.Incident.Operator.Name String TOPdesk incident’s operator name.
TOPdesk.Incident.OperatorGroup.Id String TOPdesk incident’s operator group ID.
TOPdesk.Incident.OperatorGroup.Name String TOPdesk incident’s operator group name.
TOPdesk.Incident.Supplier.Id String TOPdesk incident’s supplier ID.
TOPdesk.Incident.Supplier.Name String TOPdesk incident’s supplier name.
TOPdesk.Incident.Supplier.ForFirstLine Boolean TOPdesk incident’s supplier for first line.
TOPdesk.Incident.Supplier.ForSecondLine Boolean TOPdesk incident’s supplier for second line.
TOPdesk.Incident.ProcessingStatus.Id String TOPdesk incident’s processing status ID.
TOPdesk.Incident.ProcessingStatus.Name String TOPdesk incident’s processing status name.
TOPdesk.Incident.Completed Boolean TOPdesk incident’s completed.
TOPdesk.Incident.CompletedDate Unknown TOPdesk incident’s completed date.
TOPdesk.Incident.Closed Boolean TOPdesk incident’s closed.
TOPdesk.Incident.ClosedDate Unknown TOPdesk incident’s closed date.
TOPdesk.Incident.ClosureCode.Id String TOPdesk incident’s closure code ID.
TOPdesk.Incident.ClosureCode.Name String TOPdesk incident’s closure code name.
TOPdesk.Incident.TimeSpent Number TOPdesk incident’s time spent.
TOPdesk.Incident.TimeSpentFirstLine Number TOPdesk incident’s time spent first line
TOPdesk.Incident.TimeSpentSecondLineAndPartials Number TOPdesk incident’s time spent second line and partials.
TOPdesk.Incident.Costs Number TOPdesk incident’s costs.
TOPdesk.Incident.EscalationStatus String TOPdesk incident’s escalation status.
TOPdesk.Incident.EscalationReason.Id String TOPdesk incident’s escalation reason ID.
TOPdesk.Incident.EscalationReason.Name String TOPdesk incident’s escalation reason name.
TOPdesk.Incident.EscalationOperator.Id String TOPdesk incident’s escalation operator ID.
TOPdesk.Incident.EscalationOperator.Name String TOPdesk incident’s escalation operator name.
TOPdesk.Incident.CallDate Date TOPdesk incident’s call date.
TOPdesk.Incident.Creator.Id String TOPdesk incident’s creator ID.
TOPdesk.Incident.Creator.Name String TOPdesk incident’s creator name.
TOPdesk.Incident.CreationDate Date TOPdesk incident’s creation date.
TOPdesk.Incident.Modifier.Id String TOPdesk incident’s modifier ID.
TOPdesk.Incident.Modifier.Name String TOPdesk incident’s modifier name.
TOPdesk.Incident.ModificationDate Date TOPdesk incident’s modification date.
TOPdesk.Incident.MajorCall Boolean TOPdesk incident’s major call.
TOPdesk.Incident.MajorCallObject.Name String TOPdesk incident’s Major call object name.
TOPdesk.Incident.MajorCallObject.Id String TOPdesk incident’s major call object ID.
TOPdesk.Incident.MajorCallObject.Status Number TOPdesk incident’s major call object status.
TOPdesk.Incident.MajorCallObject.MajorIncident Boolean TOPdesk incident’s major call object major incident.
TOPdesk.Incident.PublishToSsd Boolean TOPdesk incident’s publish to SSD.
TOPdesk.Incident.Monitored Boolean TOPdesk incident’s monitored.
TOPdesk.Incident.ExpectedTimeSpent Number TOPdesk incident’s expected time spent.
TOPdesk.Incident.MainIncident Unknown TOPdesk incident’s main incident.
TOPdesk.Incident.PartialIncidents.Link String TOPdesk incident’s partial incidents link.
TOPdesk.Incident.OptionalFields1.Boolean1 Boolean TOPdesk incident’s optional fields1 boolean1.
TOPdesk.Incident.OptionalFields1.Boolean2 Boolean TOPdesk incident’s optional fields1 boolean2.
TOPdesk.Incident.OptionalFields1.Boolean3 Boolean TOPdesk incident’s optional fields1 boolean3.
TOPdesk.Incident.OptionalFields1.Boolean4 Boolean TOPdesk incident’s optional fields1 boolean4.
TOPdesk.Incident.OptionalFields1.Boolean5 Boolean TOPdesk incident’s optional fields1 boolean5.
TOPdesk.Incident.OptionalFields1.Number1 Number TOPdesk incident’s optional fields1 number1.
TOPdesk.Incident.OptionalFields1.Number2 Number TOPdesk incident’s optional fields1 number2.
TOPdesk.Incident.OptionalFields1.Number3 Number TOPdesk incident’s optional fields1 number3.
TOPdesk.Incident.OptionalFields1.Number4 Number TOPdesk incident’s optional fields1 number4.
TOPdesk.Incident.OptionalFields1.Number5 Number TOPdesk incident’s optional fields1 number5.
TOPdesk.Incident.OptionalFields1.Date1 Date TOPdesk incident’s optional fields1 date1.
TOPdesk.Incident.OptionalFields1.Date2 Date TOPdesk incident’s optional fields1 date2.
TOPdesk.Incident.OptionalFields1.Date3 Date TOPdesk incident’s optional fields1 date3.
TOPdesk.Incident.OptionalFields1.Date4 Date TOPdesk incident’s optional fields1 date4.
TOPdesk.Incident.OptionalFields1.Date5 Date TOPdesk incident’s optional fields1 date5.
TOPdesk.Incident.OptionalFields1.Text1 String TOPdesk incident’s optional fields1 text1.
TOPdesk.Incident.OptionalFields1.Text2 String TOPdesk incident’s optional fields1 text2.
TOPdesk.Incident.OptionalFields1.Text3 String TOPdesk incident’s optional fields1 text3.
TOPdesk.Incident.OptionalFields1.Text4 String TOPdesk incident’s optional fields1 text4.
TOPdesk.Incident.OptionalFields1.Text5 String TOPdesk incident’s optional fields1 text5.
TOPdesk.Incident.OptionalFields1.Memo1 String TOPdesk incident’s optional fields1 memo1.
TOPdesk.Incident.OptionalFields1.Memo2 String TOPdesk incident’s optional fields1 memo2.
TOPdesk.Incident.OptionalFields1.Memo3 String TOPdesk incident’s optional fields1 memo3.
TOPdesk.Incident.OptionalFields1.Memo4 String TOPdesk incident’s optional fields1 memo4.
TOPdesk.Incident.OptionalFields1.Memo5 String TOPdesk incident’s optional fields1 memo5.
TOPdesk.Incident.OptionalFields1.Searchlist1.Id String TOPdesk incident’s optional fields1 searchlist1 ID.
TOPdesk.Incident.OptionalFields1.Searchlist1.Name String TOPdesk incident’s optional fields1 searchlist1 name.
TOPdesk.Incident.OptionalFields1.Searchlist2.Id String TOPdesk incident’s optional fields1 searchlist2 ID.
TOPdesk.Incident.OptionalFields1.Searchlist2.Name String TOPdesk incident’s optional fields1 searchlist2 name.
TOPdesk.Incident.OptionalFields1.Searchlist3.Id String TOPdesk incident’s optional fields1 searchlist3 ID.
TOPdesk.Incident.OptionalFields1.Searchlist3.Name String TOPdesk incident’s optional fields1 searchlist3 name.
TOPdesk.Incident.OptionalFields1.Searchlist4.Id String TOPdesk incident’s optional fields1 searchlist4 ID.
TOPdesk.Incident.OptionalFields1.Searchlist4.Name String TOPdesk incident’s optional fields1 searchlist4 name.
TOPdesk.Incident.OptionalFields1.Searchlist5.Id String TOPdesk incident’s optional fields1 searchlist5 ID.
TOPdesk.Incident.OptionalFields1.Searchlist5.Name String TOPdesk incident’s optional fields1 searchlist5 name.
TOPdesk.Incident.OptionalFields2.Boolean1 Boolean TOPdesk incident’s optional fields2 boolean1.
TOPdesk.Incident.OptionalFields2.Boolean2 Boolean TOPdesk incident’s optional fields2 boolean2.
TOPdesk.Incident.OptionalFields2.Boolean3 Boolean TOPdesk incident’s optional fields2 boolean3.
TOPdesk.Incident.OptionalFields2.Boolean4 Boolean TOPdesk incident’s optional fields2 boolean4.
TOPdesk.Incident.OptionalFields2.Boolean5 Boolean TOPdesk incident’s optional fields2 boolean5.
TOPdesk.Incident.OptionalFields2.Number1 Number TOPdesk incident’s optional fields2 number1.
TOPdesk.Incident.OptionalFields2.Number2 Number TOPdesk incident’s optional fields2 number2.
TOPdesk.Incident.OptionalFields2.Number3 Number TOPdesk incident’s optional fields2 number3.
TOPdesk.Incident.OptionalFields2.Number4 Number TOPdesk incident’s optional fields2 number4.
TOPdesk.Incident.OptionalFields2.Number5 Number TOPdesk incident’s optional fields2 number5.
TOPdesk.Incident.OptionalFields2.Date1 Date TOPdesk incident’s optional fields2 date1.
TOPdesk.Incident.OptionalFields2.Date2 Date TOPdesk incident’s optional fields2 date2.
TOPdesk.Incident.OptionalFields2.Date3 Date TOPdesk incident’s optional fields2 date3.
TOPdesk.Incident.OptionalFields2.Date4 Date TOPdesk incident’s optional fields2 date4.
TOPdesk.Incident.OptionalFields2.Date5 Date TOPdesk incident’s optional fields2 date5.
TOPdesk.Incident.OptionalFields2.Text1 String TOPdesk incident’s optional fields2 text1.
TOPdesk.Incident.OptionalFields2.Text2 String TOPdesk incident’s optional fields2 text2.
TOPdesk.Incident.OptionalFields2.Text3 String TOPdesk incident’s OptionalFields2.Text3
TOPdesk.Incident.OptionalFields2.Text4 String TOPdesk incident’s optional fields2 text4.
TOPdesk.Incident.OptionalFields2.Text5 String TOPdesk incident’s optional fields2 text5.
TOPdesk.Incident.OptionalFields2.Memo1 String TOPdesk incident’s optional fields2 memo1.
TOPdesk.Incident.OptionalFields2.Memo2 String TOPdesk incident’s optional fields2 memo2.
TOPdesk.Incident.OptionalFields2.Memo3 String TOPdesk incident’s optional fields2 memo3.
TOPdesk.Incident.OptionalFields2.Memo4 String TOPdesk incident’s optional fields2 memo4.
TOPdesk.Incident.OptionalFields2.Memo5 String TOPdesk incident’s optional fields2 memo5.
TOPdesk.Incident.OptionalFields2.Searchlist1.Id String TOPdesk incident’s optional fields2 searchlist1 ID.
TOPdesk.Incident.OptionalFields2.Searchlist1.Name String TOPdesk incident’s optional fields2 searchlist1 name.
TOPdesk.Incident.OptionalFields2.Searchlist2.Id String TOPdesk incident’s optional fields2 searchlist2 ID.
TOPdesk.Incident.OptionalFields2.Searchlist2.Name String TOPdesk incident’s optional fields2 searchlist2 name.
TOPdesk.Incident.OptionalFields2.Searchlist3.Id String TOPdesk incident’s optional fields2 searchlist3 ID.
TOPdesk.Incident.OptionalFields2.Searchlist3.Name String TOPdesk incident’s optional fields2 searchlist3 name.
TOPdesk.Incident.OptionalFields2.Searchlist4.Id String TOPdesk incident’s optional fields2 searchlist4 ID.
TOPdesk.Incident.OptionalFields2.Searchlist4.Name String TOPdesk incident’s optional fields2 searchlist4 name.
TOPdesk.Incident.OptionalFields2.Searchlist5.Id String TOPdesk incident’s optional fields2 searchlist5 ID.
TOPdesk.Incident.OptionalFields2.Searchlist5.Name String TOPdesk incident’s optional fields2 searchlist5 name.
TOPdesk.Incident.ExternalLinks.Id String TOPdesk incident’s external links ID.
TOPdesk.Incident.ExternalLinks.Type String TOPdesk incident’s external links type.
TOPdesk.Incident.ExternalLinks.Date Date TOPdesk incident’s external links date.

Command Example


#### Context Example

```json
{
    "TOPdesk": {
        "Incident": [
            {
                "Action": "/tas/api/incidents/id/some-id/actions",
                "Attachments": "/tas/api/incidents/id/some-id/attachments",
                "BriefDescription": "",
                "CallDate": "2021-03-24T08:15:13.867+0000",
                "Caller": {
                    "DynamicName": "some-caller"
                },
                "Closed": false,
                "Completed": false,
                "CreationDate": "2021-03-24T08:15:13.867+0000",
                "Creator": {
                    "Id": "some-id-1",
                    "Name": "Xsoar - Operator"
                },
                "ExternalNumber": "",
                "Id": "some-id",
                "MajorCall": false,
                "ModificationDate": "2021-03-24T08:15:13.000+0000",
                "Modifier": {
                    "Id": "some-id-1",
                    "Name": "Xsoar - Operator"
                },
                "Monitored": false,
                "Number": "XSOAR-1337",
                "OnHold": false,
                "OptionalFields1": {
                    "Searchlist1": {
                        "Id": "some-id-3",
                        "Name": "Some Search Name"
                    },
                    "Searchlist3": {
                        "Id": "some-id-4",
                        "Name": "Some Other Search Name"
                    },
                    "Text1": "",
                    "Text2": "",
                    "Text3": "",
                    "Text4": "",
                    "Text5": ""
                },
                "OptionalFields2": {
                    "Text1": "",
                    "Text2": "",
                    "Text3": "",
                    "Text4": "",
                    "Text5": ""
                },
                "ProcessingStatus": {
                    "Id": "some-processing-status-id",
                    "Name": "Logged"
                },
                "PublishToSsd": false,
                "Requests": "/tas/api/incidents/id/some-id/requests",
                "Responded": false,
                "Status": "firstLine"
            }
        ]
    }
}

Human Readable Output

TOPdesk incidents

Id Number Line CallerName Status
some-id XSOAR-1337 firstLine some-caller Logged

topdesk-incident-actions


List all actions for specific incident

Permissions

Operator: With read permission on 1st/2nd line incident; Category/Branch/Operator filters apply

Persons: Accessible; Person visibility settings apply

Base Command

topdesk-incident-actions-list

Input

Argument Name Description Required
incident_id The incident ID. An ID or a number must be set. If both are set, the ID will be used. Optional
incident_number The incident number. An ID or a number must be set. If both are set, the ID will be used. Optional
limit The limit for the amount of actions. Optional

Context Output

Path Type Description
TOPdesk.Action.EntryDate Date Date of entry of the action
TOPdesk.Action.Flag Unknown Action’s flag
TOPdesk.Action.Operator.Id String ID of the operator who created the action.
TOPdesk.Action.Operator.Name String Name of the operator who created the action.
TOPdesk.Action.InvisibleForCaller Bool If the action is visible for person.
TOPdesk.Action.Person String Person who created the action, not operator.
TOPdesk.Action.Id String ID of the action.
TOPdesk.Action.Memotext String Content of the action.

topdesk-incident-create


Create an incident in TOPdesk.

The command first uses the callerLookup option and tries to attach an existing user to the caller field of the incident.
If the callerLookup shows up empty, the command will create an incident with an unregistered caller with a name as provided in the caller option.

Permissions

Operator: With create permission on 1st/2nd line incident, partials require 2nd line create permission

Person: Can only create first line incidents for himself. Only the following fields can be set depending on the setting for the new call form:

  • request
  • briefDescription
  • callType
  • category
  • subcategory
  • object
  • location
  • operatorGroup

Base Command

topdesk-incident-create

Input

Argument Name Description Required
caller The caller ID for this incident. For an unregistered caller provide a name. Required
status. Status of the incident. Can only be set by operators. Possible values are: firstLine, secondLine, partial. Optional
description Brief description. maximum 80 characters. Optional
request Initial request. Can be set by operators and persons. Optional
action Initial action. Can be set by operators and persons. Optional
action_invisible_for_caller Whether the initial action is invisible for persons. Can only be set by operators. Default value is false. Possible values are: true, false. Optional
entry_type Entry type by name. Can only be set by operators. XSOAR is set by default for mirroring. Optional
category Category by name. Can be set by operators. It is an error to provide both an ID and a name. Optional
subcategory Subcategory by name. Can be set by operators. It is an error to provide both an ID and a name. Optional
external_number External number. Can only be set by operators. Max 60 characters. Optional
main_incident Main incident ID or number, required for creating a partial incident. Can only be set by operators. Optional
additional_params Additional parameters to pass when creating an incident. (e.g., {“optionalFields1”:{“text1”:”test”}}) Optional

Context Output

Path Type Description
TOPdesk.Incident.Id String TOPdesk incident’s ID.
TOPdesk.Incident.Status String TOPdesk incident’s status.
TOPdesk.Incident.Number String TOPdesk incident’s number.
TOPdesk.Incident.Request String TOPdesk incident’s request.
TOPdesk.Incident.Requests String TOPdesk incident’s requests.
TOPdesk.Incident.Action String TOPdesk incident’s action.
TOPdesk.Incident.Attachments String TOPdesk incident’s attachments.
TOPdesk.Incident.Caller.Id String TOPdesk incident’s caller ID.
TOPdesk.Incident.Caller.DynamicName String TOPdesk incident’s caller dynamic name.
TOPdesk.Incident.Caller.Branch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.Caller.Branch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.Caller.Branch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.Caller.Branch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.Caller.Branch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.Caller.Branch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.CallerBranch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.CallerBranch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.CallerBranch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.CallerBranch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.CallerBranch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.CallerBranch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.BranchExtraFieldA Unknown TOPdesk incident’s branch extra field A.
TOPdesk.Incident.BranchExtraFieldB Unknown TOPdesk incident’s branch extra field B.
TOPdesk.Incident.BriefDescription String TOPdesk incident’s brief description.
TOPdesk.Incident.ExternalNumber String TOPdesk incident’s external number.
TOPdesk.Incident.Category.Id String TOPdesk incident’s category ID.
TOPdesk.Incident.Category.Name String TOPdesk incident’s category name.
TOPdesk.Incident.Subcategory.Id String TOPdesk incident’s subcategory ID.
TOPdesk.Incident.Subcategory.Name String TOPdesk incident’s subcategory name.
TOPdesk.Incident.CallType.Id String TOPdesk incident’s call type ID.
TOPdesk.Incident.CallType.Name String TOPdesk incident’s call type name.
TOPdesk.Incident.EntryType.Id String TOPdesk incident’s entry type ID.
TOPdesk.Incident.EntryType.Name String TOPdesk incident’s entry type name.
TOPdesk.Incident.Object.Id String TOPdesk incident’s object ID.
TOPdesk.Incident.Object.Name String TOPdesk incident’s object name.
TOPdesk.Incident.Object.Type.Id String TOPdesk incident’s object type ID.
TOPdesk.Incident.Object.Type.Name String TOPdesk incident’s object type name.
TOPdesk.Incident.Object.Make.Id String TOPdesk incident’s object make ID.
TOPdesk.Incident.Object.Make.Name String TOPdesk incident’s object make name.
TOPdesk.Incident.Object.Model.Id String TOPdesk incident’s object model ID.
TOPdesk.Incident.Object.Model.Name String TOPdesk incident’s object model name.
TOPdesk.Incident.Object.Branch.Id String TOPdesk incident’s object branch ID.
TOPdesk.Incident.Object.Branch.Name String TOPdesk incident’s object branch name.
TOPdesk.Incident.Object.Location.Id String TOPdesk incident’s object location ID.
TOPdesk.Incident.Object.Location.Name String TOPdesk incident’s object location name.
TOPdesk.Incident.Object.Specification String TOPdesk incident’s object specification.
TOPdesk.Incident.Object.SerialNumber String TOPdesk incident’s object serial number.
TOPdesk.Incident.Asset.Id String TOPdesk incident’s asset ID.
TOPdesk.Incident.Branch.ClientReferenceNumber String TOPdesk incident’s branch client reference number.
TOPdesk.Incident.Branch.TimeZone String TOPdesk incident’s branch timezone.
TOPdesk.Incident.Branch.ExtraA Unknown TOPdesk incident’s branch extra A.
TOPdesk.Incident.Branch.ExtraB Unknown TOPdesk incident’s branch extra B.
TOPdesk.Incident.Branch.Id String TOPdesk incident’s branch ID.
TOPdesk.Incident.Branch.Name String TOPdesk incident’s branch name.
TOPdesk.Incident.Location.Id String TOPdesk incident’s location ID.
TOPdesk.Incident.Location.Branch.ClientReferenceNumber String TOPdesk incident’s location branch client reference number.
TOPdesk.Incident.Location.Branch.TimeZone String TOPdesk incident’s location branch timezone.
TOPdesk.Incident.Location.Branch.ExtraA Unknown TOPdesk incident’s location branch extra A.
TOPdesk.Incident.Location.Branch.ExtraB Unknown TOPdesk incident’s location branch extra B.
TOPdesk.Incident.Location.Branch.Id String TOPdesk incident’s location branch ID.
TOPdesk.Incident.Location.Branch.Name String TOPdesk incident’s location branch name.
TOPdesk.Incident.Location.Name String TOPdesk incident’s location name.
TOPdesk.Incident.Location.Room String TOPdesk incident’s location room.
TOPdesk.Incident.Impact.Id String TOPdesk incident’s impact ID.
TOPdesk.Incident.Impact.Name String TOPdesk incident’s impact name.
TOPdesk.Incident.Urgency.Id String TOPdesk incident’s urgency ID.
TOPdesk.Incident.Urgency.Name String TOPdesk incident’s urgency name.
TOPdesk.Incident.Priority.Id String TOPdesk incident’s priority ID.
TOPdesk.Incident.Priority.Name String TOPdesk incident’s priority name.
TOPdesk.Incident.Duration.Id String TOPdesk incident’s duration ID.
TOPdesk.Incident.Duration.Name String TOPdesk incident’s duration name.
TOPdesk.Incident.TargetDate Date TOPdesk incident’s target date.
TOPdesk.Incident.Sla.Id String TOPdesk incident’s sla ID.
TOPdesk.Incident.OnHold Boolean TOPdesk incident’s on hold.
TOPdesk.Incident.OnHoldDate Unknown TOPdesk incident’s on hold date.
TOPdesk.Incident.OnHoldDuration Number TOPdesk incident’s on hold duration.
TOPdesk.Incident.FeedbackMessage Unknown TOPdesk incident’s feedback message.
TOPdesk.Incident.FeedbackRating Unknown TOPdesk incident’s feedback rating.
TOPdesk.Incident.Operator.Id String TOPdesk incident’s operator ID.
TOPdesk.Incident.Operator.Status String TOPdesk incident’s operator status.
TOPdesk.Incident.Operator.Name String TOPdesk incident’s operator name.
TOPdesk.Incident.OperatorGroup.Id String TOPdesk incident’s operator group ID.
TOPdesk.Incident.OperatorGroup.Name String TOPdesk incident’s operator group name.
TOPdesk.Incident.Supplier.Id String TOPdesk incident’s supplier ID.
TOPdesk.Incident.Supplier.Name String TOPdesk incident’s supplier name.
TOPdesk.Incident.Supplier.ForFirstLine Boolean TOPdesk incident’s supplier for first line.
TOPdesk.Incident.Supplier.ForSecondLine Boolean TOPdesk incident’s supplier for second line.
TOPdesk.Incident.ProcessingStatus.Id String TOPdesk incident’s processing status ID.
TOPdesk.Incident.ProcessingStatus.Name String TOPdesk incident’s processing status name.
TOPdesk.Incident.Completed Boolean TOPdesk incident’s completed.
TOPdesk.Incident.CompletedDate Unknown TOPdesk incident’s completed date.
TOPdesk.Incident.Closed Boolean TOPdesk incident’s closed.
TOPdesk.Incident.ClosedDate Unknown TOPdesk incident’s closed date.
TOPdesk.Incident.ClosureCode.Id String TOPdesk incident’s closure code ID.
TOPdesk.Incident.ClosureCode.Name String TOPdesk incident’s closure code name.
TOPdesk.Incident.TimeSpent Number TOPdesk incident’s time spent.
TOPdesk.Incident.TimeSpentFirstLine Number TOPdesk incident’s time spent first line
TOPdesk.Incident.TimeSpentSecondLineAndPartials Number TOPdesk incident’s time spent second line and partials.
TOPdesk.Incident.Costs Number TOPdesk incident’s costs.
TOPdesk.Incident.EscalationStatus String TOPdesk incident’s escalation status.
TOPdesk.Incident.EscalationReason.Id String TOPdesk incident’s escalation reason ID.
TOPdesk.Incident.EscalationReason.Name String TOPdesk incident’s escalation reason name.
TOPdesk.Incident.EscalationOperator.Id String TOPdesk incident’s escalation operator ID.
TOPdesk.Incident.EscalationOperator.Name String TOPdesk incident’s escalation operator name.
TOPdesk.Incident.CallDate Date TOPdesk incident’s call date.
TOPdesk.Incident.Creator.Id String TOPdesk incident’s creator ID.
TOPdesk.Incident.Creator.Name String TOPdesk incident’s creator name.
TOPdesk.Incident.CreationDate Date TOPdesk incident’s creation date.
TOPdesk.Incident.Modifier.Id String TOPdesk incident’s modifier ID.
TOPdesk.Incident.Modifier.Name String TOPdesk incident’s modifier name.
TOPdesk.Incident.ModificationDate Date TOPdesk incident’s modification date.
TOPdesk.Incident.MajorCall Boolean TOPdesk incident’s major call.
TOPdesk.Incident.MajorCallObject.Name String TOPdesk incident’s Major call object name.
TOPdesk.Incident.MajorCallObject.Id String TOPdesk incident’s major call object ID.
TOPdesk.Incident.MajorCallObject.Status Number TOPdesk incident’s major call object status.
TOPdesk.Incident.MajorCallObject.MajorIncident Boolean TOPdesk incident’s major call object major incident.
TOPdesk.Incident.PublishToSsd Boolean TOPdesk incident’s publish to SSD.
TOPdesk.Incident.Monitored Boolean TOPdesk incident’s monitored.
TOPdesk.Incident.ExpectedTimeSpent Number TOPdesk incident’s expected time spent.
TOPdesk.Incident.MainIncident Unknown TOPdesk incident’s main incident.
TOPdesk.Incident.PartialIncidents.Link String TOPdesk incident’s partial incidents link.
TOPdesk.Incident.OptionalFields1.Boolean1 Boolean TOPdesk incident’s optional fields1 boolean1.
TOPdesk.Incident.OptionalFields1.Boolean2 Boolean TOPdesk incident’s optional fields1 boolean2.
TOPdesk.Incident.OptionalFields1.Boolean3 Boolean TOPdesk incident’s optional fields1 boolean3.
TOPdesk.Incident.OptionalFields1.Boolean4 Boolean TOPdesk incident’s optional fields1 boolean4.
TOPdesk.Incident.OptionalFields1.Boolean5 Boolean TOPdesk incident’s optional fields1 boolean5.
TOPdesk.Incident.OptionalFields1.Number1 Number TOPdesk incident’s optional fields1 number1.
TOPdesk.Incident.OptionalFields1.Number2 Number TOPdesk incident’s optional fields1 number2.
TOPdesk.Incident.OptionalFields1.Number3 Number TOPdesk incident’s optional fields1 number3.
TOPdesk.Incident.OptionalFields1.Number4 Number TOPdesk incident’s optional fields1 number4.
TOPdesk.Incident.OptionalFields1.Number5 Number TOPdesk incident’s optional fields1 number5.
TOPdesk.Incident.OptionalFields1.Date1 Date TOPdesk incident’s optional fields1 date1.
TOPdesk.Incident.OptionalFields1.Date2 Date TOPdesk incident’s optional fields1 date2.
TOPdesk.Incident.OptionalFields1.Date3 Date TOPdesk incident’s optional fields1 date3.
TOPdesk.Incident.OptionalFields1.Date4 Date TOPdesk incident’s optional fields1 date4.
TOPdesk.Incident.OptionalFields1.Date5 Date TOPdesk incident’s optional fields1 date5.
TOPdesk.Incident.OptionalFields1.Text1 String TOPdesk incident’s optional fields1 text1.
TOPdesk.Incident.OptionalFields1.Text2 String TOPdesk incident’s optional fields1 text2.
TOPdesk.Incident.OptionalFields1.Text3 String TOPdesk incident’s optional fields1 text3.
TOPdesk.Incident.OptionalFields1.Text4 String TOPdesk incident’s optional fields1 text4.
TOPdesk.Incident.OptionalFields1.Text5 String TOPdesk incident’s optional fields1 text5.
TOPdesk.Incident.OptionalFields1.Memo1 String TOPdesk incident’s optional fields1 memo1.
TOPdesk.Incident.OptionalFields1.Memo2 String TOPdesk incident’s optional fields1 memo2.
TOPdesk.Incident.OptionalFields1.Memo3 String TOPdesk incident’s optional fields1 memo3.
TOPdesk.Incident.OptionalFields1.Memo4 String TOPdesk incident’s optional fields1 memo4.
TOPdesk.Incident.OptionalFields1.Memo5 String TOPdesk incident’s optional fields1 memo5.
TOPdesk.Incident.OptionalFields1.Searchlist1.Id String TOPdesk incident’s optional fields1 searchlist1 ID.
TOPdesk.Incident.OptionalFields1.Searchlist1.Name String TOPdesk incident’s optional fields1 searchlist1 name.
TOPdesk.Incident.OptionalFields1.Searchlist2.Id String TOPdesk incident’s optional fields1 searchlist2 ID.
TOPdesk.Incident.OptionalFields1.Searchlist2.Name String TOPdesk incident’s optional fields1 searchlist2 name.
TOPdesk.Incident.OptionalFields1.Searchlist3.Id String TOPdesk incident’s optional fields1 searchlist3 ID.
TOPdesk.Incident.OptionalFields1.Searchlist3.Name String TOPdesk incident’s optional fields1 searchlist3 name.
TOPdesk.Incident.OptionalFields1.Searchlist4.Id String TOPdesk incident’s optional fields1 searchlist4 ID.
TOPdesk.Incident.OptionalFields1.Searchlist4.Name String TOPdesk incident’s optional fields1 searchlist4 name.
TOPdesk.Incident.OptionalFields1.Searchlist5.Id String TOPdesk incident’s optional fields1 searchlist5 ID.
TOPdesk.Incident.OptionalFields1.Searchlist5.Name String TOPdesk incident’s optional fields1 searchlist5 name.
TOPdesk.Incident.OptionalFields2.Boolean1 Boolean TOPdesk incident’s optional fields2 boolean1.
TOPdesk.Incident.OptionalFields2.Boolean2 Boolean TOPdesk incident’s optional fields2 boolean2.
TOPdesk.Incident.OptionalFields2.Boolean3 Boolean TOPdesk incident’s optional fields2 boolean3.
TOPdesk.Incident.OptionalFields2.Boolean4 Boolean TOPdesk incident’s optional fields2 boolean4.
TOPdesk.Incident.OptionalFields2.Boolean5 Boolean TOPdesk incident’s optional fields2 boolean5.
TOPdesk.Incident.OptionalFields2.Number1 Number TOPdesk incident’s optional fields2 number1.
TOPdesk.Incident.OptionalFields2.Number2 Number TOPdesk incident’s optional fields2 number2.
TOPdesk.Incident.OptionalFields2.Number3 Number TOPdesk incident’s optional fields2 number3.
TOPdesk.Incident.OptionalFields2.Number4 Number TOPdesk incident’s optional fields2 number4.
TOPdesk.Incident.OptionalFields2.Number5 Number TOPdesk incident’s optional fields2 number5.
TOPdesk.Incident.OptionalFields2.Date1 Date TOPdesk incident’s optional fields2 date1.
TOPdesk.Incident.OptionalFields2.Date2 Date TOPdesk incident’s optional fields2 date2.
TOPdesk.Incident.OptionalFields2.Date3 Date TOPdesk incident’s optional fields2 date3.
TOPdesk.Incident.OptionalFields2.Date4 Date TOPdesk incident’s optional fields2 date4.
TOPdesk.Incident.OptionalFields2.Date5 Date TOPdesk incident’s optional fields2 date5.
TOPdesk.Incident.OptionalFields2.Text1 String TOPdesk incident’s optional fields2 text1.
TOPdesk.Incident.OptionalFields2.Text2 String TOPdesk incident’s optional fields2 text2.
TOPdesk.Incident.OptionalFields2.Text3 String TOPdesk incident’s optional fields2.text3.
TOPdesk.Incident.OptionalFields2.Text4 String TOPdesk incident’s optional fields2 text4.
TOPdesk.Incident.OptionalFields2.Text5 String TOPdesk incident’s optional fields2 text5.
TOPdesk.Incident.OptionalFields2.Memo1 String TOPdesk incident’s optional fields2 memo1.
TOPdesk.Incident.OptionalFields2.Memo2 String TOPdesk incident’s optional fields2 memo2.
TOPdesk.Incident.OptionalFields2.Memo3 String TOPdesk incident’s optional fields2 memo3.
TOPdesk.Incident.OptionalFields2.Memo4 String TOPdesk incident’s optional fields2 memo4.
TOPdesk.Incident.OptionalFields2.Memo5 String TOPdesk incident’s optional fields2 memo5.
TOPdesk.Incident.OptionalFields2.Searchlist1.Id String TOPdesk incident’s optional fields2 searchlist1 ID.
TOPdesk.Incident.OptionalFields2.Searchlist1.Name String TOPdesk incident’s optional fields2 searchlist1 name.
TOPdesk.Incident.OptionalFields2.Searchlist2.Id String TOPdesk incident’s optional fields2 searchlist2 ID.
TOPdesk.Incident.OptionalFields2.Searchlist2.Name String TOPdesk incident’s optional fields2 searchlist2 name.
TOPdesk.Incident.OptionalFields2.Searchlist3.Id String TOPdesk incident’s optional fields2 searchlist3 ID.
TOPdesk.Incident.OptionalFields2.Searchlist3.Name String TOPdesk incident’s optional fields2 searchlist3 name.
TOPdesk.Incident.OptionalFields2.Searchlist4.Id String TOPdesk incident’s optional fields2 searchlist4 ID.
TOPdesk.Incident.OptionalFields2.Searchlist4.Name String TOPdesk incident’s optional fields2 searchlist4 name.
TOPdesk.Incident.OptionalFields2.Searchlist5.Id String TOPdesk incident’s optional fields2 searchlist5 ID.
TOPdesk.Incident.OptionalFields2.Searchlist5.Name String TOPdesk incident’s optional fields2 searchlist5 name.
TOPdesk.Incident.ExternalLinks.Id String TOPdesk incident’s external links ID.
TOPdesk.Incident.ExternalLinks.Type String TOPdesk incident’s external links type.
TOPdesk.Incident.ExternalLinks.Date Date TOPdesk incident’s external links date.

Command Example

!topdesk-incident-create caller=some-caller

Context Example

{
    "TOPdesk": {
        "Incident": [
            {
                "Action": "/tas/api/incidents/id/some-id/actions",
                "Attachments": "/tas/api/incidents/id/some-id/attachments",
                "BriefDescription": "",
                "CallDate": "2021-03-24T08:15:13.867+0000",
                "Caller": {
                    "DynamicName": "some-caller"
                },
                "Closed": false,
                "Completed": false,
                "CreationDate": "2021-03-24T08:15:13.867+0000",
                "Creator": {
                    "Id": "some-id-1",
                    "Name": "Xsoar - Operator"
                },
                "ExternalNumber": "",
                "Id": "some-id",
                "MajorCall": false,
                "ModificationDate": "2021-03-24T08:15:13.000+0000",
                "Modifier": {
                    "Id": "some-id-1",
                    "Name": "Xsoar - Operator"
                },
                "Monitored": false,
                "Number": "XSOAR-1337",
                "OnHold": false,
                "OptionalFields1": {
                    "Searchlist1": {
                        "Id": "some-id-3",
                        "Name": "Some Search Name"
                    },
                    "Searchlist3": {
                        "Id": "some-id-4",
                        "Name": "Some Other Search Name"
                    },
                    "Text1": "",
                    "Text2": "",
                    "Text3": "",
                    "Text4": "",
                    "Text5": ""
                },
                "OptionalFields2": {
                    "Text1": "",
                    "Text2": "",
                    "Text3": "",
                    "Text4": "",
                    "Text5": ""
                },
                "ProcessingStatus": {
                    "Id": "some-processing-status-id",
                    "Name": "Logged"
                },
                "PublishToSsd": false,
                "Requests": "/tas/api/incidents/id/some-id/requests",
                "Responded": false,
                "Status": "firstLine"
            }
        ]
    }
}

Human Readable Output

TOPdesk incidents

Id Number Line CallerName Status
some-id XSOAR-1337 firstLine some-caller Logged

topdesk-incident-update


Update an incident in TOPdesk.

Permissions

Operator: With edit permission on 1st/2nd line incident; Category/Branch/Operator filters apply

Person: Accessible; Person visibility settings apply.
Depending on settings, the following fields can be updated:

  • action
  • closed
  • feedbackRating
  • feedbackMessage

Base Command

topdesk-incident-update

Input

Argument Name Description Required
id The incident ID. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
number. The incident number. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
status. Status of the incident. Can only be set by operators. Possible values are: firstLine, secondLine, partial. Optional
description Brief description. maximum 80 characters. Optional
request Initial request. Can be set by operators and persons. Optional
action Initial action. Can be set by operators and persons. Optional
caller The caller ID for this incident. For an unregistered caller provide a name. Optional
action_invisible_for_caller Whether the initial action is invisible for persons. Can only be set by operators. Default value is false. Possible values are: true, false. Optional
entry_type Entry type by name. Can only be set by operators. XSOAR is set by default for mirroring. Optional
category Category by name. Can be set by operators. It is an error to provide both an ID and a name. Optional
subcategory Subcategory by name. Can be set by operators. It is an error to provide both an ID and a name. Optional
external_number External number. Can only be set by operators. Max 60 characters. Optional
main_incident Main incident ID or number, required for creating a partial incident. Can only be set by operators. Optional
additional_params Additional parameters to pass when creating an incident. (e.g., {“optionalFields1”:{“text1”:”test”}}) Optional

Context Output

Path Type Description
TOPdesk.Incident.Id String TOPdesk incident’s ID.
TOPdesk.Incident.Status String TOPdesk incident’s status.
TOPdesk.Incident.Number String TOPdesk incident’s number.
TOPdesk.Incident.Request String TOPdesk incident’s request.
TOPdesk.Incident.Requests String TOPdesk incident’s requests.
TOPdesk.Incident.Action String TOPdesk incident’s action.
TOPdesk.Incident.Attachments String TOPdesk incident’s attachments.
TOPdesk.Incident.Caller.Id String TOPdesk incident’s caller ID.
TOPdesk.Incident.Caller.DynamicName String TOPdesk incident’s caller dynamic name.
TOPdesk.Incident.Caller.Branch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.Caller.Branch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.Caller.Branch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.Caller.Branch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.Caller.Branch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.Caller.Branch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.CallerBranch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.CallerBranch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.CallerBranch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.CallerBranch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.CallerBranch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.CallerBranch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.BranchExtraFieldA Unknown TOPdesk incident’s branch extra field A.
TOPdesk.Incident.BranchExtraFieldB Unknown TOPdesk incident’s branch extra field B.
TOPdesk.Incident.BriefDescription String TOPdesk incident’s brief description.
TOPdesk.Incident.ExternalNumber String TOPdesk incident’s external number.
TOPdesk.Incident.Category.Id String TOPdesk incident’s category ID.
TOPdesk.Incident.Category.Name String TOPdesk incident’s category name.
TOPdesk.Incident.Subcategory.Id String TOPdesk incident’s subcategory ID.
TOPdesk.Incident.Subcategory.Name String TOPdesk incident’s subcategory name.
TOPdesk.Incident.CallType.Id String TOPdesk incident’s call type ID.
TOPdesk.Incident.CallType.Name String TOPdesk incident’s call type name.
TOPdesk.Incident.EntryType.Id String TOPdesk incident’s entry type ID.
TOPdesk.Incident.EntryType.Name String TOPdesk incident’s entry type name.
TOPdesk.Incident.Object.Id String TOPdesk incident’s object ID.
TOPdesk.Incident.Object.Name String TOPdesk incident’s object name.
TOPdesk.Incident.Object.Type.Id String TOPdesk incident’s object type ID.
TOPdesk.Incident.Object.Type.Name String TOPdesk incident’s object type name.
TOPdesk.Incident.Object.Make.Id String TOPdesk incident’s object make ID.
TOPdesk.Incident.Object.Make.Name String TOPdesk incident’s object make name.
TOPdesk.Incident.Object.Model.Id String TOPdesk incident’s object model ID.
TOPdesk.Incident.Object.Model.Name String TOPdesk incident’s object model name.
TOPdesk.Incident.Object.Branch.Id String TOPdesk incident’s object branch ID.
TOPdesk.Incident.Object.Branch.Name String TOPdesk incident’s object branch name.
TOPdesk.Incident.Object.Location.Id String TOPdesk incident’s object location ID.
TOPdesk.Incident.Object.Location.Name String TOPdesk incident’s object location name.
TOPdesk.Incident.Object.Specification String TOPdesk incident’s object specification.
TOPdesk.Incident.Object.SerialNumber String TOPdesk incident’s object serial number.
TOPdesk.Incident.Asset.Id String TOPdesk incident’s asset ID.
TOPdesk.Incident.Branch.ClientReferenceNumber String TOPdesk incident’s branch client reference number.
TOPdesk.Incident.Branch.TimeZone String TOPdesk incident’s branch timezone.
TOPdesk.Incident.Branch.ExtraA Unknown TOPdesk incident’s branch extra A.
TOPdesk.Incident.Branch.ExtraB Unknown TOPdesk incident’s branch extra B.
TOPdesk.Incident.Branch.Id String TOPdesk incident’s branch ID.
TOPdesk.Incident.Branch.Name String TOPdesk incident’s branch name.
TOPdesk.Incident.Location.Id String TOPdesk incident’s location ID.
TOPdesk.Incident.Location.Branch.ClientReferenceNumber String TOPdesk incident’s location branch client reference number.
TOPdesk.Incident.Location.Branch.TimeZone String TOPdesk incident’s location branch timezone.
TOPdesk.Incident.Location.Branch.ExtraA Unknown TOPdesk incident’s location branch extra A.
TOPdesk.Incident.Location.Branch.ExtraB Unknown TOPdesk incident’s location branch extra B.
TOPdesk.Incident.Location.Branch.Id String TOPdesk incident’s location branch ID.
TOPdesk.Incident.Location.Branch.Name String TOPdesk incident’s location branch name.
TOPdesk.Incident.Location.Name String TOPdesk incident’s location name.
TOPdesk.Incident.Location.Room String TOPdesk incident’s location room.
TOPdesk.Incident.Impact.Id String TOPdesk incident’s impact ID.
TOPdesk.Incident.Impact.Name String TOPdesk incident’s impact name.
TOPdesk.Incident.Urgency.Id String TOPdesk incident’s urgency ID.
TOPdesk.Incident.Urgency.Name String TOPdesk incident’s urgency name.
TOPdesk.Incident.Priority.Id String TOPdesk incident’s priority ID.
TOPdesk.Incident.Priority.Name String TOPdesk incident’s priority name.
TOPdesk.Incident.Duration.Id String TOPdesk incident’s duration ID.
TOPdesk.Incident.Duration.Name String TOPdesk incident’s duration name.
TOPdesk.Incident.TargetDate Date TOPdesk incident’s target date.
TOPdesk.Incident.Sla.Id String TOPdesk incident’s sla ID.
TOPdesk.Incident.OnHold Boolean TOPdesk incident’s on hold.
TOPdesk.Incident.OnHoldDate Unknown TOPdesk incident’s on hold date.
TOPdesk.Incident.OnHoldDuration Number TOPdesk incident’s on hold duration.
TOPdesk.Incident.FeedbackMessage Unknown TOPdesk incident’s feedback message.
TOPdesk.Incident.FeedbackRating Unknown TOPdesk incident’s feedback rating.
TOPdesk.Incident.Operator.Id String TOPdesk incident’s operator ID.
TOPdesk.Incident.Operator.Status String TOPdesk incident’s operator status.
TOPdesk.Incident.Operator.Name String TOPdesk incident’s operator name.
TOPdesk.Incident.OperatorGroup.Id String TOPdesk incident’s operator group ID.
TOPdesk.Incident.OperatorGroup.Name String TOPdesk incident’s operator group name.
TOPdesk.Incident.Supplier.Id String TOPdesk incident’s supplier ID.
TOPdesk.Incident.Supplier.Name String TOPdesk incident’s supplier name.
TOPdesk.Incident.Supplier.ForFirstLine Boolean TOPdesk incident’s supplier for first line.
TOPdesk.Incident.Supplier.ForSecondLine Boolean TOPdesk incident’s supplier for second line.
TOPdesk.Incident.ProcessingStatus.Id String TOPdesk incident’s processing status ID.
TOPdesk.Incident.ProcessingStatus.Name String TOPdesk incident’s processing status name.
TOPdesk.Incident.Completed Boolean TOPdesk incident’s completed.
TOPdesk.Incident.CompletedDate Unknown TOPdesk incident’s completed date.
TOPdesk.Incident.Closed Boolean TOPdesk incident’s closed.
TOPdesk.Incident.ClosedDate Unknown TOPdesk incident’s closed date.
TOPdesk.Incident.ClosureCode.Id String TOPdesk incident’s closure code ID.
TOPdesk.Incident.ClosureCode.Name String TOPdesk incident’s closure code name.
TOPdesk.Incident.TimeSpent Number TOPdesk incident’s time spent.
TOPdesk.Incident.TimeSpentFirstLine Number TOPdesk incident’s time spent first line
TOPdesk.Incident.TimeSpentSecondLineAndPartials Number TOPdesk incident’s time spent second line and partials.
TOPdesk.Incident.Costs Number TOPdesk incident’s costs.
TOPdesk.Incident.EscalationStatus String TOPdesk incident’s escalation status.
TOPdesk.Incident.EscalationReason.Id String TOPdesk incident’s escalation reason ID.
TOPdesk.Incident.EscalationReason.Name String TOPdesk incident’s escalation reason name.
TOPdesk.Incident.EscalationOperator.Id String TOPdesk incident’s escalation operator ID.
TOPdesk.Incident.EscalationOperator.Name String TOPdesk incident’s escalation operator name.
TOPdesk.Incident.CallDate Date TOPdesk incident’s call date.
TOPdesk.Incident.Creator.Id String TOPdesk incident’s creator ID.
TOPdesk.Incident.Creator.Name String TOPdesk incident’s creator name.
TOPdesk.Incident.CreationDate Date TOPdesk incident’s creation date.
TOPdesk.Incident.Modifier.Id String TOPdesk incident’s modifier ID.
TOPdesk.Incident.Modifier.Name String TOPdesk incident’s modifier name.
TOPdesk.Incident.ModificationDate Date TOPdesk incident’s modification date.
TOPdesk.Incident.MajorCall Boolean TOPdesk incident’s major call.
TOPdesk.Incident.MajorCallObject.Name String TOPdesk incident’s Major call object name.
TOPdesk.Incident.MajorCallObject.Id String TOPdesk incident’s major call object ID.
TOPdesk.Incident.MajorCallObject.Status Number TOPdesk incident’s major call object status.
TOPdesk.Incident.MajorCallObject.MajorIncident Boolean TOPdesk incident’s major call object major incident.
TOPdesk.Incident.PublishToSsd Boolean TOPdesk incident’s publish to SSD.
TOPdesk.Incident.Monitored Boolean TOPdesk incident’s monitored.
TOPdesk.Incident.ExpectedTimeSpent Number TOPdesk incident’s expected time spent.
TOPdesk.Incident.MainIncident Unknown TOPdesk incident’s main incident.
TOPdesk.Incident.PartialIncidents.Link String TOPdesk incident’s partial incidents link.
TOPdesk.Incident.OptionalFields1.Boolean1 Boolean TOPdesk incident’s optional fields1 boolean1.
TOPdesk.Incident.OptionalFields1.Boolean2 Boolean TOPdesk incident’s optional fields1 boolean2.
TOPdesk.Incident.OptionalFields1.Boolean3 Boolean TOPdesk incident’s optional fields1 boolean3.
TOPdesk.Incident.OptionalFields1.Boolean4 Boolean TOPdesk incident’s optional fields1 boolean4.
TOPdesk.Incident.OptionalFields1.Boolean5 Boolean TOPdesk incident’s optional fields1 boolean5.
TOPdesk.Incident.OptionalFields1.Number1 Number TOPdesk incident’s optional fields1 number1.
TOPdesk.Incident.OptionalFields1.Number2 Number TOPdesk incident’s optional fields1 number2.
TOPdesk.Incident.OptionalFields1.Number3 Number TOPdesk incident’s optional fields1 number3.
TOPdesk.Incident.OptionalFields1.Number4 Number TOPdesk incident’s optional fields1 number4.
TOPdesk.Incident.OptionalFields1.Number5 Number TOPdesk incident’s optional fields1 number5.
TOPdesk.Incident.OptionalFields1.Date1 Date TOPdesk incident’s optional fields1 date1.
TOPdesk.Incident.OptionalFields1.Date2 Date TOPdesk incident’s optional fields1 date2.
TOPdesk.Incident.OptionalFields1.Date3 Date TOPdesk incident’s optional fields1 date3.
TOPdesk.Incident.OptionalFields1.Date4 Date TOPdesk incident’s optional fields1 date4.
TOPdesk.Incident.OptionalFields1.Date5 Date TOPdesk incident’s optional fields1 date5.
TOPdesk.Incident.OptionalFields1.Text1 String TOPdesk incident’s optional fields1 text1.
TOPdesk.Incident.OptionalFields1.Text2 String TOPdesk incident’s optional fields1 text2.
TOPdesk.Incident.OptionalFields1.Text3 String TOPdesk incident’s optional fields1 text3.
TOPdesk.Incident.OptionalFields1.Text4 String TOPdesk incident’s optional fields1 text4.
TOPdesk.Incident.OptionalFields1.Text5 String TOPdesk incident’s optional fields1 text5.
TOPdesk.Incident.OptionalFields1.Memo1 String TOPdesk incident’s optional fields1 memo1.
TOPdesk.Incident.OptionalFields1.Memo2 String TOPdesk incident’s optional fields1 memo2.
TOPdesk.Incident.OptionalFields1.Memo3 String TOPdesk incident’s optional fields1 memo3.
TOPdesk.Incident.OptionalFields1.Memo4 String TOPdesk incident’s optional fields1 memo4.
TOPdesk.Incident.OptionalFields1.Memo5 String TOPdesk incident’s optional fields1 memo5.
TOPdesk.Incident.OptionalFields1.Searchlist1.Id String TOPdesk incident’s optional fields1 searchlist1 ID.
TOPdesk.Incident.OptionalFields1.Searchlist1.Name String TOPdesk incident’s optional fields1 searchlist1 name.
TOPdesk.Incident.OptionalFields1.Searchlist2.Id String TOPdesk incident’s optional fields1 searchlist2 ID.
TOPdesk.Incident.OptionalFields1.Searchlist2.Name String TOPdesk incident’s optional fields1 searchlist2 name.
TOPdesk.Incident.OptionalFields1.Searchlist3.Id String TOPdesk incident’s optional fields1 searchlist3 ID.
TOPdesk.Incident.OptionalFields1.Searchlist3.Name String TOPdesk incident’s optional fields1 searchlist3 name.
TOPdesk.Incident.OptionalFields1.Searchlist4.Id String TOPdesk incident’s optional fields1 searchlist4 ID.
TOPdesk.Incident.OptionalFields1.Searchlist4.Name String TOPdesk incident’s optional fields1 searchlist4 name.
TOPdesk.Incident.OptionalFields1.Searchlist5.Id String TOPdesk incident’s optional fields1 searchlist5 ID.
TOPdesk.Incident.OptionalFields1.Searchlist5.Name String TOPdesk incident’s optional fields1 searchlist5 name.
TOPdesk.Incident.OptionalFields2.Boolean1 Boolean TOPdesk incident’s optional fields2 boolean1.
TOPdesk.Incident.OptionalFields2.Boolean2 Boolean TOPdesk incident’s optional fields2 boolean2.
TOPdesk.Incident.OptionalFields2.Boolean3 Boolean TOPdesk incident’s optional fields2 boolean3.
TOPdesk.Incident.OptionalFields2.Boolean4 Boolean TOPdesk incident’s optional fields2 boolean4.
TOPdesk.Incident.OptionalFields2.Boolean5 Boolean TOPdesk incident’s optional fields2 boolean5.
TOPdesk.Incident.OptionalFields2.Number1 Number TOPdesk incident’s optional fields2 number1.
TOPdesk.Incident.OptionalFields2.Number2 Number TOPdesk incident’s optional fields2 number2.
TOPdesk.Incident.OptionalFields2.Number3 Number TOPdesk incident’s optional fields2 number3.
TOPdesk.Incident.OptionalFields2.Number4 Number TOPdesk incident’s optional fields2 number4.
TOPdesk.Incident.OptionalFields2.Number5 Number TOPdesk incident’s optional fields2 number5.
TOPdesk.Incident.OptionalFields2.Date1 Date TOPdesk incident’s optional fields2 date1.
TOPdesk.Incident.OptionalFields2.Date2 Date TOPdesk incident’s optional fields2 date2.
TOPdesk.Incident.OptionalFields2.Date3 Date TOPdesk incident’s optional fields2 date3.
TOPdesk.Incident.OptionalFields2.Date4 Date TOPdesk incident’s optional fields2 date4.
TOPdesk.Incident.OptionalFields2.Date5 Date TOPdesk incident’s optional fields2 date5.
TOPdesk.Incident.OptionalFields2.Text1 String TOPdesk incident’s optional fields2 text1.
TOPdesk.Incident.OptionalFields2.Text2 String TOPdesk incident’s optional fields2 text2.
TOPdesk.Incident.OptionalFields2.Text3 String TOPdesk incident’s Optional fields2.text3
TOPdesk.Incident.OptionalFields2.Text4 String TOPdesk incident’s optional fields2 text4.
TOPdesk.Incident.OptionalFields2.Text5 String TOPdesk incident’s optional fields2 text5.
TOPdesk.Incident.OptionalFields2.Memo1 String TOPdesk incident’s optional fields2 memo1.
TOPdesk.Incident.OptionalFields2.Memo2 String TOPdesk incident’s optional fields2 memo2.
TOPdesk.Incident.OptionalFields2.Memo3 String TOPdesk incident’s optional fields2 memo3.
TOPdesk.Incident.OptionalFields2.Memo4 String TOPdesk incident’s optional fields2 memo4.
TOPdesk.Incident.OptionalFields2.Memo5 String TOPdesk incident’s optional fields2 memo5.
TOPdesk.Incident.OptionalFields2.Searchlist1.Id String TOPdesk incident’s optional fields2 searchlist1 ID.
TOPdesk.Incident.OptionalFields2.Searchlist1.Name String TOPdesk incident’s optional fields2 searchlist1 name.
TOPdesk.Incident.OptionalFields2.Searchlist2.Id String TOPdesk incident’s optional fields2 searchlist2 ID.
TOPdesk.Incident.OptionalFields2.Searchlist2.Name String TOPdesk incident’s optional fields2 searchlist2 name.
TOPdesk.Incident.OptionalFields2.Searchlist3.Id String TOPdesk incident’s optional fields2 searchlist3 ID.
TOPdesk.Incident.OptionalFields2.Searchlist3.Name String TOPdesk incident’s optional fields2 searchlist3 name.
TOPdesk.Incident.OptionalFields2.Searchlist4.Id String TOPdesk incident’s optional fields2 searchlist4 ID.
TOPdesk.Incident.OptionalFields2.Searchlist4.Name String TOPdesk incident’s optional fields2 searchlist4 name.
TOPdesk.Incident.OptionalFields2.Searchlist5.Id String TOPdesk incident’s optional fields2 searchlist5 ID.
TOPdesk.Incident.OptionalFields2.Searchlist5.Name String TOPdesk incident’s optional fields2 searchlist5 name.
TOPdesk.Incident.ExternalLinks.Id String TOPdesk incident’s external links ID.
TOPdesk.Incident.ExternalLinks.Type String TOPdesk incident’s external links type.
TOPdesk.Incident.ExternalLinks.Date Date TOPdesk incident’s external links date.

Command Example

!topdesk-incident-update description=some-updated-description number=XSOAR-1337

Context Example

{
    "TOPdesk": {
        "Incident": [
            {
                "Action": "/tas/api/incidents/id/some-id/actions",
                "Attachments": "/tas/api/incidents/id/some-id/attachments",
                "BriefDescription": "some-updated-description",
                "CallDate": "2021-03-24T08:15:13.867+0000",
                "Caller": {
                    "DynamicName": "some-caller"
                },
                "Closed": false,
                "Completed": false,
                "CreationDate": "2021-03-24T08:15:13.867+0000",
                "Creator": {
                    "Id": "some-id-1",
                    "Name": "Xsoar - Operator"
                },
                "ExternalNumber": "",
                "Id": "some-id",
                "MajorCall": false,
                "ModificationDate": "2021-03-24T08:15:13.000+0000",
                "Modifier": {
                    "Id": "some-id-1",
                    "Name": "Xsoar - Operator"
                },
                "Monitored": false,
                "Number": "XSOAR-1337",
                "OnHold": false,
                "OptionalFields1": {
                    "Searchlist1": {
                        "Id": "some-id-3",
                        "Name": "Some Search Name"
                    },
                    "Searchlist3": {
                        "Id": "some-id-4",
                        "Name": "Some Other Search Name"
                    },
                    "Text1": "",
                    "Text2": "",
                    "Text3": "",
                    "Text4": "",
                    "Text5": ""
                },
                "OptionalFields2": {
                    "Text1": "",
                    "Text2": "",
                    "Text3": "",
                    "Text4": "",
                    "Text5": ""
                },
                "ProcessingStatus": {
                    "Id": "some-processing-status-id",
                    "Name": "Logged"
                },
                "PublishToSsd": false,
                "Requests": "/tas/api/incidents/id/some-id/requests",
                "Responded": false,
                "Status": "firstLine"
            }
        ]
    }
}

Human Readable Output

TOPdesk incidents

Id Number Line CallerName Status
some-id XSOAR-1337 firstLine some-caller Logged

topdesk-incident-escalate


Escalate an incident in TOPdesk.

Permissions

Operator: With 1st line incident write permission and write permission for escalating incidents; Category/Branch/Operator filters apply

Person: No access

Base Command

topdesk-incident-escalate

Input

Argument Name Description Required
id The incident ID. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
number. The incident number. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
escalate_reason_id The escalation reason ID. Required

Context Output

Path Type Description
TOPdesk.Incident.Id String TOPdesk incident’s ID.
TOPdesk.Incident.Status String TOPdesk incident’s status.
TOPdesk.Incident.Number String TOPdesk incident’s number.
TOPdesk.Incident.Request String TOPdesk incident’s request.
TOPdesk.Incident.Requests String TOPdesk incident’s requests.
TOPdesk.Incident.Action String TOPdesk incident’s action.
TOPdesk.Incident.Attachments String TOPdesk incident’s attachments.
TOPdesk.Incident.Caller.Id String TOPdesk incident’s caller ID.
TOPdesk.Incident.Caller.DynamicName String TOPdesk incident’s caller dynamic name.
TOPdesk.Incident.Caller.Branch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.Caller.Branch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.Caller.Branch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.Caller.Branch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.Caller.Branch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.Caller.Branch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.CallerBranch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.CallerBranch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.CallerBranch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.CallerBranch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.CallerBranch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.CallerBranch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.BranchExtraFieldA Unknown TOPdesk incident’s branch extra field A.
TOPdesk.Incident.BranchExtraFieldB Unknown TOPdesk incident’s branch extra field B.
TOPdesk.Incident.BriefDescription String TOPdesk incident’s brief description.
TOPdesk.Incident.ExternalNumber String TOPdesk incident’s external number.
TOPdesk.Incident.Category.Id String TOPdesk incident’s category ID.
TOPdesk.Incident.Category.Name String TOPdesk incident’s category name.
TOPdesk.Incident.Subcategory.Id String TOPdesk incident’s subcategory ID.
TOPdesk.Incident.Subcategory.Name String TOPdesk incident’s subcategory name.
TOPdesk.Incident.CallType.Id String TOPdesk incident’s call type ID.
TOPdesk.Incident.CallType.Name String TOPdesk incident’s call type name.
TOPdesk.Incident.EntryType.Id String TOPdesk incident’s entry type ID.
TOPdesk.Incident.EntryType.Name String TOPdesk incident’s entry type name.
TOPdesk.Incident.Object.Id String TOPdesk incident’s object ID.
TOPdesk.Incident.Object.Name String TOPdesk incident’s object name.
TOPdesk.Incident.Object.Type.Id String TOPdesk incident’s object type ID.
TOPdesk.Incident.Object.Type.Name String TOPdesk incident’s object type name.
TOPdesk.Incident.Object.Make.Id String TOPdesk incident’s object make ID.
TOPdesk.Incident.Object.Make.Name String TOPdesk incident’s object make name.
TOPdesk.Incident.Object.Model.Id String TOPdesk incident’s object model ID.
TOPdesk.Incident.Object.Model.Name String TOPdesk incident’s object model name.
TOPdesk.Incident.Object.Branch.Id String TOPdesk incident’s object branch ID.
TOPdesk.Incident.Object.Branch.Name String TOPdesk incident’s object branch name.
TOPdesk.Incident.Object.Location.Id String TOPdesk incident’s object location ID.
TOPdesk.Incident.Object.Location.Name String TOPdesk incident’s object location name.
TOPdesk.Incident.Object.Specification String TOPdesk incident’s object specification.
TOPdesk.Incident.Object.SerialNumber String TOPdesk incident’s object serial number.
TOPdesk.Incident.Asset.Id String TOPdesk incident’s asset ID.
TOPdesk.Incident.Branch.ClientReferenceNumber String TOPdesk incident’s branch client reference number.
TOPdesk.Incident.Branch.TimeZone String TOPdesk incident’s branch timezone.
TOPdesk.Incident.Branch.ExtraA Unknown TOPdesk incident’s branch extra A.
TOPdesk.Incident.Branch.ExtraB Unknown TOPdesk incident’s branch extra B.
TOPdesk.Incident.Branch.Id String TOPdesk incident’s branch ID.
TOPdesk.Incident.Branch.Name String TOPdesk incident’s branch name.
TOPdesk.Incident.Location.Id String TOPdesk incident’s location ID.
TOPdesk.Incident.Location.Branch.ClientReferenceNumber String TOPdesk incident’s location branch client reference number.
TOPdesk.Incident.Location.Branch.TimeZone String TOPdesk incident’s location branch timezone.
TOPdesk.Incident.Location.Branch.ExtraA Unknown TOPdesk incident’s location branch extra A.
TOPdesk.Incident.Location.Branch.ExtraB Unknown TOPdesk incident’s location branch extra B.
TOPdesk.Incident.Location.Branch.Id String TOPdesk incident’s location branch ID.
TOPdesk.Incident.Location.Branch.Name String TOPdesk incident’s location branch name.
TOPdesk.Incident.Location.Name String TOPdesk incident’s location name.
TOPdesk.Incident.Location.Room String TOPdesk incident’s location room.
TOPdesk.Incident.Impact.Id String TOPdesk incident’s impact ID.
TOPdesk.Incident.Impact.Name String TOPdesk incident’s impact name.
TOPdesk.Incident.Urgency.Id String TOPdesk incident’s urgency ID.
TOPdesk.Incident.Urgency.Name String TOPdesk incident’s urgency name.
TOPdesk.Incident.Priority.Id String TOPdesk incident’s priority ID.
TOPdesk.Incident.Priority.Name String TOPdesk incident’s priority name.
TOPdesk.Incident.Duration.Id String TOPdesk incident’s duration ID.
TOPdesk.Incident.Duration.Name String TOPdesk incident’s duration name.
TOPdesk.Incident.TargetDate Date TOPdesk incident’s target date.
TOPdesk.Incident.Sla.Id String TOPdesk incident’s sla ID.
TOPdesk.Incident.OnHold Boolean TOPdesk incident’s on hold.
TOPdesk.Incident.OnHoldDate Unknown TOPdesk incident’s on hold date.
TOPdesk.Incident.OnHoldDuration Number TOPdesk incident’s on hold duration.
TOPdesk.Incident.FeedbackMessage Unknown TOPdesk incident’s feedback message.
TOPdesk.Incident.FeedbackRating Unknown TOPdesk incident’s feedback rating.
TOPdesk.Incident.Operator.Id String TOPdesk incident’s operator ID.
TOPdesk.Incident.Operator.Status String TOPdesk incident’s operator status.
TOPdesk.Incident.Operator.Name String TOPdesk incident’s operator name.
TOPdesk.Incident.OperatorGroup.Id String TOPdesk incident’s operator group ID.
TOPdesk.Incident.OperatorGroup.Name String TOPdesk incident’s operator group name.
TOPdesk.Incident.Supplier.Id String TOPdesk incident’s supplier ID.
TOPdesk.Incident.Supplier.Name String TOPdesk incident’s supplier name.
TOPdesk.Incident.Supplier.ForFirstLine Boolean TOPdesk incident’s supplier for first line.
TOPdesk.Incident.Supplier.ForSecondLine Boolean TOPdesk incident’s supplier for second line.
TOPdesk.Incident.ProcessingStatus.Id String TOPdesk incident’s processing status ID.
TOPdesk.Incident.ProcessingStatus.Name String TOPdesk incident’s processing status name.
TOPdesk.Incident.Completed Boolean TOPdesk incident’s completed.
TOPdesk.Incident.CompletedDate Unknown TOPdesk incident’s completed date.
TOPdesk.Incident.Closed Boolean TOPdesk incident’s closed.
TOPdesk.Incident.ClosedDate Unknown TOPdesk incident’s closed date.
TOPdesk.Incident.ClosureCode.Id String TOPdesk incident’s closure code ID.
TOPdesk.Incident.ClosureCode.Name String TOPdesk incident’s closure code name.
TOPdesk.Incident.TimeSpent Number TOPdesk incident’s time spent.
TOPdesk.Incident.TimeSpentFirstLine Number TOPdesk incident’s time spent first line
TOPdesk.Incident.TimeSpentSecondLineAndPartials Number TOPdesk incident’s time spent second line and partials.
TOPdesk.Incident.Costs Number TOPdesk incident’s costs.
TOPdesk.Incident.EscalationStatus String TOPdesk incident’s escalation status.
TOPdesk.Incident.EscalationReason.Id String TOPdesk incident’s escalation reason ID.
TOPdesk.Incident.EscalationReason.Name String TOPdesk incident’s escalation reason name.
TOPdesk.Incident.EscalationOperator.Id String TOPdesk incident’s escalation operator ID.
TOPdesk.Incident.EscalationOperator.Name String TOPdesk incident’s escalation operator name.
TOPdesk.Incident.CallDate Date TOPdesk incident’s call date.
TOPdesk.Incident.Creator.Id String TOPdesk incident’s creator ID.
TOPdesk.Incident.Creator.Name String TOPdesk incident’s creator name.
TOPdesk.Incident.CreationDate Date TOPdesk incident’s creation date.
TOPdesk.Incident.Modifier.Id String TOPdesk incident’s modifier ID.
TOPdesk.Incident.Modifier.Name String TOPdesk incident’s modifier name.
TOPdesk.Incident.ModificationDate Date TOPdesk incident’s modification date.
TOPdesk.Incident.MajorCall Boolean TOPdesk incident’s major call.
TOPdesk.Incident.MajorCallObject.Name String TOPdesk incident’s Major call object name.
TOPdesk.Incident.MajorCallObject.Id String TOPdesk incident’s major call object ID.
TOPdesk.Incident.MajorCallObject.Status Number TOPdesk incident’s major call object status.
TOPdesk.Incident.MajorCallObject.MajorIncident Boolean TOPdesk incident’s major call object major incident.
TOPdesk.Incident.PublishToSsd Boolean TOPdesk incident’s publish to SSD.
TOPdesk.Incident.Monitored Boolean TOPdesk incident’s monitored.
TOPdesk.Incident.ExpectedTimeSpent Number TOPdesk incident’s expected time spent.
TOPdesk.Incident.MainIncident Unknown TOPdesk incident’s main incident.
TOPdesk.Incident.PartialIncidents.Link String TOPdesk incident’s partial incidents link.
TOPdesk.Incident.OptionalFields1.Boolean1 Boolean TOPdesk incident’s optional fields1 boolean1.
TOPdesk.Incident.OptionalFields1.Boolean2 Boolean TOPdesk incident’s optional fields1 boolean2.
TOPdesk.Incident.OptionalFields1.Boolean3 Boolean TOPdesk incident’s optional fields1 boolean3.
TOPdesk.Incident.OptionalFields1.Boolean4 Boolean TOPdesk incident’s optional fields1 boolean4.
TOPdesk.Incident.OptionalFields1.Boolean5 Boolean TOPdesk incident’s optional fields1 boolean5.
TOPdesk.Incident.OptionalFields1.Number1 Number TOPdesk incident’s optional fields1 number1.
TOPdesk.Incident.OptionalFields1.Number2 Number TOPdesk incident’s optional fields1 number2.
TOPdesk.Incident.OptionalFields1.Number3 Number TOPdesk incident’s optional fields1 number3.
TOPdesk.Incident.OptionalFields1.Number4 Number TOPdesk incident’s optional fields1 number4.
TOPdesk.Incident.OptionalFields1.Number5 Number TOPdesk incident’s optional fields1 number5.
TOPdesk.Incident.OptionalFields1.Date1 Date TOPdesk incident’s optional fields1 date1.
TOPdesk.Incident.OptionalFields1.Date2 Date TOPdesk incident’s optional fields1 date2.
TOPdesk.Incident.OptionalFields1.Date3 Date TOPdesk incident’s optional fields1 date3.
TOPdesk.Incident.OptionalFields1.Date4 Date TOPdesk incident’s optional fields1 date4.
TOPdesk.Incident.OptionalFields1.Date5 Date TOPdesk incident’s optional fields1 date5.
TOPdesk.Incident.OptionalFields1.Text1 String TOPdesk incident’s optional fields1 text1.
TOPdesk.Incident.OptionalFields1.Text2 String TOPdesk incident’s optional fields1 text2.
TOPdesk.Incident.OptionalFields1.Text3 String TOPdesk incident’s optional fields1 text3.
TOPdesk.Incident.OptionalFields1.Text4 String TOPdesk incident’s optional fields1 text4.
TOPdesk.Incident.OptionalFields1.Text5 String TOPdesk incident’s optional fields1 text5.
TOPdesk.Incident.OptionalFields1.Memo1 String TOPdesk incident’s optional fields1 memo1.
TOPdesk.Incident.OptionalFields1.Memo2 String TOPdesk incident’s optional fields1 memo2.
TOPdesk.Incident.OptionalFields1.Memo3 String TOPdesk incident’s optional fields1 memo3.
TOPdesk.Incident.OptionalFields1.Memo4 String TOPdesk incident’s optional fields1 memo4.
TOPdesk.Incident.OptionalFields1.Memo5 String TOPdesk incident’s optional fields1 memo5.
TOPdesk.Incident.OptionalFields1.Searchlist1.Id String TOPdesk incident’s optional fields1 searchlist1 ID.
TOPdesk.Incident.OptionalFields1.Searchlist1.Name String TOPdesk incident’s optional fields1 searchlist1 name.
TOPdesk.Incident.OptionalFields1.Searchlist2.Id String TOPdesk incident’s optional fields1 searchlist2 ID.
TOPdesk.Incident.OptionalFields1.Searchlist2.Name String TOPdesk incident’s optional fields1 searchlist2 name.
TOPdesk.Incident.OptionalFields1.Searchlist3.Id String TOPdesk incident’s optional fields1 searchlist3 ID.
TOPdesk.Incident.OptionalFields1.Searchlist3.Name String TOPdesk incident’s optional fields1 searchlist3 name.
TOPdesk.Incident.OptionalFields1.Searchlist4.Id String TOPdesk incident’s optional fields1 searchlist4 ID.
TOPdesk.Incident.OptionalFields1.Searchlist4.Name String TOPdesk incident’s optional fields1 searchlist4 name.
TOPdesk.Incident.OptionalFields1.Searchlist5.Id String TOPdesk incident’s optional fields1 searchlist5 ID.
TOPdesk.Incident.OptionalFields1.Searchlist5.Name String TOPdesk incident’s optional fields1 searchlist5 name.
TOPdesk.Incident.OptionalFields2.Boolean1 Boolean TOPdesk incident’s optional fields2 boolean1.
TOPdesk.Incident.OptionalFields2.Boolean2 Boolean TOPdesk incident’s optional fields2 boolean2.
TOPdesk.Incident.OptionalFields2.Boolean3 Boolean TOPdesk incident’s optional fields2 boolean3.
TOPdesk.Incident.OptionalFields2.Boolean4 Boolean TOPdesk incident’s optional fields2 boolean4.
TOPdesk.Incident.OptionalFields2.Boolean5 Boolean TOPdesk incident’s optional fields2 boolean5.
TOPdesk.Incident.OptionalFields2.Number1 Number TOPdesk incident’s optional fields2 number1.
TOPdesk.Incident.OptionalFields2.Number2 Number TOPdesk incident’s optional fields2 number2.
TOPdesk.Incident.OptionalFields2.Number3 Number TOPdesk incident’s optional fields2 number3.
TOPdesk.Incident.OptionalFields2.Number4 Number TOPdesk incident’s optional fields2 number4.
TOPdesk.Incident.OptionalFields2.Number5 Number TOPdesk incident’s optional fields2 number5.
TOPdesk.Incident.OptionalFields2.Date1 Date TOPdesk incident’s optional fields2 date1.
TOPdesk.Incident.OptionalFields2.Date2 Date TOPdesk incident’s optional fields2 date2.
TOPdesk.Incident.OptionalFields2.Date3 Date TOPdesk incident’s optional fields2 date3.
TOPdesk.Incident.OptionalFields2.Date4 Date TOPdesk incident’s optional fields2 date4.
TOPdesk.Incident.OptionalFields2.Date5 Date TOPdesk incident’s optional fields2 date5.
TOPdesk.Incident.OptionalFields2.Text1 String TOPdesk incident’s optional fields2 text1.
TOPdesk.Incident.OptionalFields2.Text2 String TOPdesk incident’s optional fields2 text2.
TOPdesk.Incident.OptionalFields2.Text3 String TOPdesk incident’s optional fields2.text3.
TOPdesk.Incident.OptionalFields2.Text4 String TOPdesk incident’s optional fields2 text4.
TOPdesk.Incident.OptionalFields2.Text5 String TOPdesk incident’s optional fields2 text5.
TOPdesk.Incident.OptionalFields2.Memo1 String TOPdesk incident’s optional fields2 memo1.
TOPdesk.Incident.OptionalFields2.Memo2 String TOPdesk incident’s optional fields2 memo2.
TOPdesk.Incident.OptionalFields2.Memo3 String TOPdesk incident’s optional fields2 memo3.
TOPdesk.Incident.OptionalFields2.Memo4 String TOPdesk incident’s optional fields2 memo4.
TOPdesk.Incident.OptionalFields2.Memo5 String TOPdesk incident’s optional fields2 memo5.
TOPdesk.Incident.OptionalFields2.Searchlist1.Id String TOPdesk incident’s optional fields2 searchlist1 ID.
TOPdesk.Incident.OptionalFields2.Searchlist1.Name String TOPdesk incident’s optional fields2 searchlist1 name.
TOPdesk.Incident.OptionalFields2.Searchlist2.Id String TOPdesk incident’s optional fields2 searchlist2 ID.
TOPdesk.Incident.OptionalFields2.Searchlist2.Name String TOPdesk incident’s optional fields2 searchlist2 name.
TOPdesk.Incident.OptionalFields2.Searchlist3.Id String TOPdesk incident’s optional fields2 searchlist3 ID.
TOPdesk.Incident.OptionalFields2.Searchlist3.Name String TOPdesk incident’s optional fields2 searchlist3 name.
TOPdesk.Incident.OptionalFields2.Searchlist4.Id String TOPdesk incident’s optional fields2 searchlist4 ID.
TOPdesk.Incident.OptionalFields2.Searchlist4.Name String TOPdesk incident’s optional fields2 searchlist4 name.
TOPdesk.Incident.OptionalFields2.Searchlist5.Id String TOPdesk incident’s optional fields2 searchlist5 ID.
TOPdesk.Incident.OptionalFields2.Searchlist5.Name String TOPdesk incident’s optional fields2 searchlist5 name.
TOPdesk.Incident.ExternalLinks.Id String TOPdesk incident’s external links ID.
TOPdesk.Incident.ExternalLinks.Type String TOPdesk incident’s external links type.
TOPdesk.Incident.ExternalLinks.Date Date TOPdesk incident’s external links date.

Command Example

!topdesk-incident-escalate number=XSOAR-1337 escalate_reason_id=some-escalation-id-1

Context Example

{
    "TOPdesk": {
        "Incident": [
            {
                "Action": "/tas/api/incidents/id/some-id/actions",
                "Attachments": "/tas/api/incidents/id/some-id/attachments",
                "BriefDescription": "some-updated-description",
                "CallDate": "2021-03-24T08:15:13.867+0000",
                "Caller": {
                    "DynamicName": "some-caller"
                },
                "Closed": false,
                "Completed": false,
                "CreationDate": "2021-03-24T08:15:13.867+0000",
                "Creator": {
                    "Id": "some-id-1",
                    "Name": "Xsoar - Operator"
                },
                "ExternalNumber": "",
                "Id": "some-id",
                "MajorCall": false,
                "ModificationDate": "2021-03-24T08:15:13.000+0000",
                "Modifier": {
                    "Id": "some-id-1",
                    "Name": "Xsoar - Operator"
                },
                "Monitored": false,
                "Number": "XSOAR-1337",
                "OnHold": false,
                "OptionalFields1": {
                    "Searchlist1": {
                        "Id": "some-id-3",
                        "Name": "Some Search Name"
                    },
                    "Searchlist3": {
                        "Id": "some-id-4",
                        "Name": "Some Other Search Name"
                    },
                    "Text1": "",
                    "Text2": "",
                    "Text3": "",
                    "Text4": "",
                    "Text5": ""
                },
                "OptionalFields2": {
                    "Text1": "",
                    "Text2": "",
                    "Text3": "",
                    "Text4": "",
                    "Text5": ""
                },
                "ProcessingStatus": {
                    "Id": "some-processing-status-id",
                    "Name": "Logged"
                },
                "PublishToSsd": false,
                "Requests": "/tas/api/incidents/id/some-id/requests",
                "Responded": false,
                "Status": "secondLine"
            }
        ]
    }
}

Human Readable Output

TOPdesk incidents

Id Number Line CallerName Status
some-id XSOAR-1337 secondLine some-caller Logged

topdesk-incident-deescalate


Deescalate an incident in TOPdesk.

Permissions

Operator: With 1st and 2nd line incident write permission; Category/Branch/Operator filters apply; Feature must be enabled

Person: No access

Base Command

topdesk-incident-deescalate

Input

Argument Name Description Required
id The incident ID. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
number. The incident number. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
deescalate_reason_id The deescalation reason ID. Required

Context Output

Path Type Description
TOPdesk.Incident.Id String TOPdesk incident’s ID.
TOPdesk.Incident.Status String TOPdesk incident’s status.
TOPdesk.Incident.Number String TOPdesk incident’s number.
TOPdesk.Incident.Request String TOPdesk incident’s request.
TOPdesk.Incident.Requests String TOPdesk incident’s requests.
TOPdesk.Incident.Action String TOPdesk incident’s action.
TOPdesk.Incident.Attachments String TOPdesk incident’s attachments.
TOPdesk.Incident.Caller.Id String TOPdesk incident’s caller ID.
TOPdesk.Incident.Caller.DynamicName String TOPdesk incident’s caller dynamic name.
TOPdesk.Incident.Caller.Branch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.Caller.Branch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.Caller.Branch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.Caller.Branch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.Caller.Branch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.Caller.Branch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.CallerBranch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.CallerBranch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.CallerBranch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.CallerBranch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.CallerBranch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.CallerBranch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.BranchExtraFieldA Unknown TOPdesk incident’s branch extra field A.
TOPdesk.Incident.BranchExtraFieldB Unknown TOPdesk incident’s branch extra field B.
TOPdesk.Incident.BriefDescription String TOPdesk incident’s brief description.
TOPdesk.Incident.ExternalNumber String TOPdesk incident’s external number.
TOPdesk.Incident.Category.Id String TOPdesk incident’s category ID.
TOPdesk.Incident.Category.Name String TOPdesk incident’s category name.
TOPdesk.Incident.Subcategory.Id String TOPdesk incident’s subcategory ID.
TOPdesk.Incident.Subcategory.Name String TOPdesk incident’s subcategory name.
TOPdesk.Incident.CallType.Id String TOPdesk incident’s call type ID.
TOPdesk.Incident.CallType.Name String TOPdesk incident’s call type name.
TOPdesk.Incident.EntryType.Id String TOPdesk incident’s entry type ID.
TOPdesk.Incident.EntryType.Name String TOPdesk incident’s entry type name.
TOPdesk.Incident.Object.Id String TOPdesk incident’s object ID.
TOPdesk.Incident.Object.Name String TOPdesk incident’s object name.
TOPdesk.Incident.Object.Type.Id String TOPdesk incident’s object type ID.
TOPdesk.Incident.Object.Type.Name String TOPdesk incident’s object type name.
TOPdesk.Incident.Object.Make.Id String TOPdesk incident’s object make ID.
TOPdesk.Incident.Object.Make.Name String TOPdesk incident’s object make name.
TOPdesk.Incident.Object.Model.Id String TOPdesk incident’s object model ID.
TOPdesk.Incident.Object.Model.Name String TOPdesk incident’s object model name.
TOPdesk.Incident.Object.Branch.Id String TOPdesk incident’s object branch ID.
TOPdesk.Incident.Object.Branch.Name String TOPdesk incident’s object branch name.
TOPdesk.Incident.Object.Location.Id String TOPdesk incident’s object location ID.
TOPdesk.Incident.Object.Location.Name String TOPdesk incident’s object location name.
TOPdesk.Incident.Object.Specification String TOPdesk incident’s object specification.
TOPdesk.Incident.Object.SerialNumber String TOPdesk incident’s object serial number.
TOPdesk.Incident.Asset.Id String TOPdesk incident’s asset ID.
TOPdesk.Incident.Branch.ClientReferenceNumber String TOPdesk incident’s branch client reference number.
TOPdesk.Incident.Branch.TimeZone String TOPdesk incident’s branch timezone.
TOPdesk.Incident.Branch.ExtraA Unknown TOPdesk incident’s branch extra A.
TOPdesk.Incident.Branch.ExtraB Unknown TOPdesk incident’s branch extra B.
TOPdesk.Incident.Branch.Id String TOPdesk incident’s branch ID.
TOPdesk.Incident.Branch.Name String TOPdesk incident’s branch name.
TOPdesk.Incident.Location.Id String TOPdesk incident’s location ID.
TOPdesk.Incident.Location.Branch.ClientReferenceNumber String TOPdesk incident’s location branch client reference number.
TOPdesk.Incident.Location.Branch.TimeZone String TOPdesk incident’s location branch timezone.
TOPdesk.Incident.Location.Branch.ExtraA Unknown TOPdesk incident’s location branch extra A.
TOPdesk.Incident.Location.Branch.ExtraB Unknown TOPdesk incident’s location branch extra B.
TOPdesk.Incident.Location.Branch.Id String TOPdesk incident’s location branch ID.
TOPdesk.Incident.Location.Branch.Name String TOPdesk incident’s location branch name.
TOPdesk.Incident.Location.Name String TOPdesk incident’s location name.
TOPdesk.Incident.Location.Room String TOPdesk incident’s location room.
TOPdesk.Incident.Impact.Id String TOPdesk incident’s impact ID.
TOPdesk.Incident.Impact.Name String TOPdesk incident’s impact name.
TOPdesk.Incident.Urgency.Id String TOPdesk incident’s urgency ID.
TOPdesk.Incident.Urgency.Name String TOPdesk incident’s urgency name.
TOPdesk.Incident.Priority.Id String TOPdesk incident’s priority ID.
TOPdesk.Incident.Priority.Name String TOPdesk incident’s priority name.
TOPdesk.Incident.Duration.Id String TOPdesk incident’s duration ID.
TOPdesk.Incident.Duration.Name String TOPdesk incident’s duration name.
TOPdesk.Incident.TargetDate Date TOPdesk incident’s target date.
TOPdesk.Incident.Sla.Id String TOPdesk incident’s sla ID.
TOPdesk.Incident.OnHold Boolean TOPdesk incident’s on hold.
TOPdesk.Incident.OnHoldDate Unknown TOPdesk incident’s on hold date.
TOPdesk.Incident.OnHoldDuration Number TOPdesk incident’s on hold duration.
TOPdesk.Incident.FeedbackMessage Unknown TOPdesk incident’s feedback message.
TOPdesk.Incident.FeedbackRating Unknown TOPdesk incident’s feedback rating.
TOPdesk.Incident.Operator.Id String TOPdesk incident’s operator ID.
TOPdesk.Incident.Operator.Status String TOPdesk incident’s operator status.
TOPdesk.Incident.Operator.Name String TOPdesk incident’s operator name.
TOPdesk.Incident.OperatorGroup.Id String TOPdesk incident’s operator group ID.
TOPdesk.Incident.OperatorGroup.Name String TOPdesk incident’s operator group name.
TOPdesk.Incident.Supplier.Id String TOPdesk incident’s supplier ID.
TOPdesk.Incident.Supplier.Name String TOPdesk incident’s supplier name.
TOPdesk.Incident.Supplier.ForFirstLine Boolean TOPdesk incident’s supplier for first line.
TOPdesk.Incident.Supplier.ForSecondLine Boolean TOPdesk incident’s supplier for second line.
TOPdesk.Incident.ProcessingStatus.Id String TOPdesk incident’s processing status ID.
TOPdesk.Incident.ProcessingStatus.Name String TOPdesk incident’s processing status name.
TOPdesk.Incident.Completed Boolean TOPdesk incident’s completed.
TOPdesk.Incident.CompletedDate Unknown TOPdesk incident’s completed date.
TOPdesk.Incident.Closed Boolean TOPdesk incident’s closed.
TOPdesk.Incident.ClosedDate Unknown TOPdesk incident’s closed date.
TOPdesk.Incident.ClosureCode.Id String TOPdesk incident’s closure code ID.
TOPdesk.Incident.ClosureCode.Name String TOPdesk incident’s closure code name.
TOPdesk.Incident.TimeSpent Number TOPdesk incident’s time spent.
TOPdesk.Incident.TimeSpentFirstLine Number TOPdesk incident’s time spent first line
TOPdesk.Incident.TimeSpentSecondLineAndPartials Number TOPdesk incident’s time spent second line and partials.
TOPdesk.Incident.Costs Number TOPdesk incident’s costs.
TOPdesk.Incident.EscalationStatus String TOPdesk incident’s escalation status.
TOPdesk.Incident.EscalationReason.Id String TOPdesk incident’s escalation reason ID.
TOPdesk.Incident.EscalationReason.Name String TOPdesk incident’s escalation reason name.
TOPdesk.Incident.EscalationOperator.Id String TOPdesk incident’s escalation operator ID.
TOPdesk.Incident.EscalationOperator.Name String TOPdesk incident’s escalation operator name.
TOPdesk.Incident.CallDate Date TOPdesk incident’s call date.
TOPdesk.Incident.Creator.Id String TOPdesk incident’s creator ID.
TOPdesk.Incident.Creator.Name String TOPdesk incident’s creator name.
TOPdesk.Incident.CreationDate Date TOPdesk incident’s creation date.
TOPdesk.Incident.Modifier.Id String TOPdesk incident’s modifier ID.
TOPdesk.Incident.Modifier.Name String TOPdesk incident’s modifier name.
TOPdesk.Incident.ModificationDate Date TOPdesk incident’s modification date.
TOPdesk.Incident.MajorCall Boolean TOPdesk incident’s major call.
TOPdesk.Incident.MajorCallObject.Name String TOPdesk incident’s Major call object name.
TOPdesk.Incident.MajorCallObject.Id String TOPdesk incident’s major call object ID.
TOPdesk.Incident.MajorCallObject.Status Number TOPdesk incident’s major call object status.
TOPdesk.Incident.MajorCallObject.MajorIncident Boolean TOPdesk incident’s major call object major incident.
TOPdesk.Incident.PublishToSsd Boolean TOPdesk incident’s publish to SSD.
TOPdesk.Incident.Monitored Boolean TOPdesk incident’s monitored.
TOPdesk.Incident.ExpectedTimeSpent Number TOPdesk incident’s expected time spent.
TOPdesk.Incident.MainIncident Unknown TOPdesk incident’s main incident.
TOPdesk.Incident.PartialIncidents.Link String TOPdesk incident’s partial incidents link.
TOPdesk.Incident.OptionalFields1.Boolean1 Boolean TOPdesk incident’s optional fields1 boolean1.
TOPdesk.Incident.OptionalFields1.Boolean2 Boolean TOPdesk incident’s optional fields1 boolean2.
TOPdesk.Incident.OptionalFields1.Boolean3 Boolean TOPdesk incident’s optional fields1 boolean3.
TOPdesk.Incident.OptionalFields1.Boolean4 Boolean TOPdesk incident’s optional fields1 boolean4.
TOPdesk.Incident.OptionalFields1.Boolean5 Boolean TOPdesk incident’s optional fields1 boolean5.
TOPdesk.Incident.OptionalFields1.Number1 Number TOPdesk incident’s optional fields1 number1.
TOPdesk.Incident.OptionalFields1.Number2 Number TOPdesk incident’s optional fields1 number2.
TOPdesk.Incident.OptionalFields1.Number3 Number TOPdesk incident’s optional fields1 number3.
TOPdesk.Incident.OptionalFields1.Number4 Number TOPdesk incident’s optional fields1 number4.
TOPdesk.Incident.OptionalFields1.Number5 Number TOPdesk incident’s optional fields1 number5.
TOPdesk.Incident.OptionalFields1.Date1 Date TOPdesk incident’s optional fields1 date1.
TOPdesk.Incident.OptionalFields1.Date2 Date TOPdesk incident’s optional fields1 date2.
TOPdesk.Incident.OptionalFields1.Date3 Date TOPdesk incident’s optional fields1 date3.
TOPdesk.Incident.OptionalFields1.Date4 Date TOPdesk incident’s optional fields1 date4.
TOPdesk.Incident.OptionalFields1.Date5 Date TOPdesk incident’s optional fields1 date5.
TOPdesk.Incident.OptionalFields1.Text1 String TOPdesk incident’s optional fields1 text1.
TOPdesk.Incident.OptionalFields1.Text2 String TOPdesk incident’s optional fields1 text2.
TOPdesk.Incident.OptionalFields1.Text3 String TOPdesk incident’s optional fields1 text3.
TOPdesk.Incident.OptionalFields1.Text4 String TOPdesk incident’s optional fields1 text4.
TOPdesk.Incident.OptionalFields1.Text5 String TOPdesk incident’s optional fields1 text5.
TOPdesk.Incident.OptionalFields1.Memo1 String TOPdesk incident’s optional fields1 memo1.
TOPdesk.Incident.OptionalFields1.Memo2 String TOPdesk incident’s optional fields1 memo2.
TOPdesk.Incident.OptionalFields1.Memo3 String TOPdesk incident’s optional fields1 memo3.
TOPdesk.Incident.OptionalFields1.Memo4 String TOPdesk incident’s optional fields1 memo4.
TOPdesk.Incident.OptionalFields1.Memo5 String TOPdesk incident’s optional fields1 memo5.
TOPdesk.Incident.OptionalFields1.Searchlist1.Id String TOPdesk incident’s optional fields1 searchlist1 ID.
TOPdesk.Incident.OptionalFields1.Searchlist1.Name String TOPdesk incident’s optional fields1 searchlist1 name.
TOPdesk.Incident.OptionalFields1.Searchlist2.Id String TOPdesk incident’s optional fields1 searchlist2 ID.
TOPdesk.Incident.OptionalFields1.Searchlist2.Name String TOPdesk incident’s optional fields1 searchlist2 name.
TOPdesk.Incident.OptionalFields1.Searchlist3.Id String TOPdesk incident’s optional fields1 searchlist3 ID.
TOPdesk.Incident.OptionalFields1.Searchlist3.Name String TOPdesk incident’s optional fields1 searchlist3 name.
TOPdesk.Incident.OptionalFields1.Searchlist4.Id String TOPdesk incident’s optional fields1 searchlist4 ID.
TOPdesk.Incident.OptionalFields1.Searchlist4.Name String TOPdesk incident’s optional fields1 searchlist4 name.
TOPdesk.Incident.OptionalFields1.Searchlist5.Id String TOPdesk incident’s optional fields1 searchlist5 ID.
TOPdesk.Incident.OptionalFields1.Searchlist5.Name String TOPdesk incident’s optional fields1 searchlist5 name.
TOPdesk.Incident.OptionalFields2.Boolean1 Boolean TOPdesk incident’s optional fields2 boolean1.
TOPdesk.Incident.OptionalFields2.Boolean2 Boolean TOPdesk incident’s optional fields2 boolean2.
TOPdesk.Incident.OptionalFields2.Boolean3 Boolean TOPdesk incident’s optional fields2 boolean3.
TOPdesk.Incident.OptionalFields2.Boolean4 Boolean TOPdesk incident’s optional fields2 boolean4.
TOPdesk.Incident.OptionalFields2.Boolean5 Boolean TOPdesk incident’s optional fields2 boolean5.
TOPdesk.Incident.OptionalFields2.Number1 Number TOPdesk incident’s optional fields2 number1.
TOPdesk.Incident.OptionalFields2.Number2 Number TOPdesk incident’s optional fields2 number2.
TOPdesk.Incident.OptionalFields2.Number3 Number TOPdesk incident’s optional fields2 number3.
TOPdesk.Incident.OptionalFields2.Number4 Number TOPdesk incident’s optional fields2 number4.
TOPdesk.Incident.OptionalFields2.Number5 Number TOPdesk incident’s optional fields2 number5.
TOPdesk.Incident.OptionalFields2.Date1 Date TOPdesk incident’s optional fields2 date1.
TOPdesk.Incident.OptionalFields2.Date2 Date TOPdesk incident’s optional fields2 date2.
TOPdesk.Incident.OptionalFields2.Date3 Date TOPdesk incident’s optional fields2 date3.
TOPdesk.Incident.OptionalFields2.Date4 Date TOPdesk incident’s optional fields2 date4.
TOPdesk.Incident.OptionalFields2.Date5 Date TOPdesk incident’s optional fields2 date5.
TOPdesk.Incident.OptionalFields2.Text1 String TOPdesk incident’s optional fields2 text1.
TOPdesk.Incident.OptionalFields2.Text2 String TOPdesk incident’s optional fields2 text2.
TOPdesk.Incident.OptionalFields2.Text3 String TOPdesk incident’s optional fields2.text3.
TOPdesk.Incident.OptionalFields2.Text4 String TOPdesk incident’s optional fields2 text4.
TOPdesk.Incident.OptionalFields2.Text5 String TOPdesk incident’s optional fields2 text5.
TOPdesk.Incident.OptionalFields2.Memo1 String TOPdesk incident’s optional fields2 memo1.
TOPdesk.Incident.OptionalFields2.Memo2 String TOPdesk incident’s optional fields2 memo2.
TOPdesk.Incident.OptionalFields2.Memo3 String TOPdesk incident’s optional fields2 memo3.
TOPdesk.Incident.OptionalFields2.Memo4 String TOPdesk incident’s optional fields2 memo4.
TOPdesk.Incident.OptionalFields2.Memo5 String TOPdesk incident’s optional fields2 memo5.
TOPdesk.Incident.OptionalFields2.Searchlist1.Id String TOPdesk incident’s optional fields2 searchlist1 ID.
TOPdesk.Incident.OptionalFields2.Searchlist1.Name String TOPdesk incident’s optional fields2 searchlist1 name.
TOPdesk.Incident.OptionalFields2.Searchlist2.Id String TOPdesk incident’s optional fields2 searchlist2 ID.
TOPdesk.Incident.OptionalFields2.Searchlist2.Name String TOPdesk incident’s optional fields2 searchlist2 name.
TOPdesk.Incident.OptionalFields2.Searchlist3.Id String TOPdesk incident’s optional fields2 searchlist3 ID.
TOPdesk.Incident.OptionalFields2.Searchlist3.Name String TOPdesk incident’s optional fields2 searchlist3 name.
TOPdesk.Incident.OptionalFields2.Searchlist4.Id String TOPdesk incident’s optional fields2 searchlist4 ID.
TOPdesk.Incident.OptionalFields2.Searchlist4.Name String TOPdesk incident’s optional fields2 searchlist4 name.
TOPdesk.Incident.OptionalFields2.Searchlist5.Id String TOPdesk incident’s optional fields2 searchlist5 ID.
TOPdesk.Incident.OptionalFields2.Searchlist5.Name String TOPdesk incident’s optional fields2 searchlist5 name.
TOPdesk.Incident.ExternalLinks.Id String TOPdesk incident’s external links ID.
TOPdesk.Incident.ExternalLinks.Type String TOPdesk incident’s external links type.
TOPdesk.Incident.ExternalLinks.Date Date TOPdesk incident’s external links date.

Command Example

!topdesk-incident-deescalate number=XSOAR-1337 deescalate_reason_id=some-deescalation-id-1

Context Example

{
    "TOPdesk": {
        "Incident": [
            {
                "Action": "/tas/api/incidents/id/some-id/actions",
                "Attachments": "/tas/api/incidents/id/some-id/attachments",
                "BriefDescription": "some-updated-description",
                "CallDate": "2021-03-24T08:15:13.867+0000",
                "Caller": {
                    "DynamicName": "some-caller"
                },
                "Closed": false,
                "Completed": false,
                "CreationDate": "2021-03-24T08:15:13.867+0000",
                "Creator": {
                    "Id": "some-id-1",
                    "Name": "Xsoar - Operator"
                },
                "ExternalNumber": "",
                "Id": "some-id",
                "MajorCall": false,
                "ModificationDate": "2021-03-24T08:15:13.000+0000",
                "Modifier": {
                    "Id": "some-id-1",
                    "Name": "Xsoar - Operator"
                },
                "Monitored": false,
                "Number": "XSOAR-1337",
                "OnHold": false,
                "OptionalFields1": {
                    "Searchlist1": {
                        "Id": "some-id-3",
                        "Name": "Some Search Name"
                    },
                    "Searchlist3": {
                        "Id": "some-id-4",
                        "Name": "Some Other Search Name"
                    },
                    "Text1": "",
                    "Text2": "",
                    "Text3": "",
                    "Text4": "",
                    "Text5": ""
                },
                "OptionalFields2": {
                    "Text1": "",
                    "Text2": "",
                    "Text3": "",
                    "Text4": "",
                    "Text5": ""
                },
                "ProcessingStatus": {
                    "Id": "some-processing-status-id",
                    "Name": "Logged"
                },
                "PublishToSsd": false,
                "Requests": "/tas/api/incidents/id/some-id/requests",
                "Responded": false,
                "Status": "firstLine"
            }
        ]
    }
}

Human Readable Output

TOPdesk incidents

Id Number Line CallerName Status
some-id XSOAR-1337 firstLine some-caller Logged

topdesk-incident-archive


Archive an incident in TOPdesk.

Permissions

Operator: Incident write permission and archiving permission; Category/Branch/Operator filters apply;

Person: No access

Base Command

topdesk-incident-archive

Input

Argument Name Description Required
id The incident ID. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
number. The incident number. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
archive_reason_id The archiving reason ID. Required

Context Output

Path Type Description
TOPdesk.Incident.Id String TOPdesk incident’s ID.
TOPdesk.Incident.Status String TOPdesk incident’s status.
TOPdesk.Incident.Number String TOPdesk incident’s number.
TOPdesk.Incident.Request String TOPdesk incident’s request.
TOPdesk.Incident.Requests String TOPdesk incident’s requests.
TOPdesk.Incident.Action String TOPdesk incident’s action.
TOPdesk.Incident.Attachments String TOPdesk incident’s attachments.
TOPdesk.Incident.Caller.Id String TOPdesk incident’s caller ID.
TOPdesk.Incident.Caller.DynamicName String TOPdesk incident’s caller dynamic name.
TOPdesk.Incident.Caller.Branch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.Caller.Branch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.Caller.Branch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.Caller.Branch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.Caller.Branch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.Caller.Branch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.CallerBranch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.CallerBranch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.CallerBranch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.CallerBranch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.CallerBranch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.CallerBranch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.BranchExtraFieldA Unknown TOPdesk incident’s branch extra field A.
TOPdesk.Incident.BranchExtraFieldB Unknown TOPdesk incident’s branch extra field B.
TOPdesk.Incident.BriefDescription String TOPdesk incident’s brief description.
TOPdesk.Incident.ExternalNumber String TOPdesk incident’s external number.
TOPdesk.Incident.Category.Id String TOPdesk incident’s category ID.
TOPdesk.Incident.Category.Name String TOPdesk incident’s category name.
TOPdesk.Incident.Subcategory.Id String TOPdesk incident’s subcategory ID.
TOPdesk.Incident.Subcategory.Name String TOPdesk incident’s subcategory name.
TOPdesk.Incident.CallType.Id String TOPdesk incident’s call type ID.
TOPdesk.Incident.CallType.Name String TOPdesk incident’s call type name.
TOPdesk.Incident.EntryType.Id String TOPdesk incident’s entry type ID.
TOPdesk.Incident.EntryType.Name String TOPdesk incident’s entry type name.
TOPdesk.Incident.Object.Id String TOPdesk incident’s object ID.
TOPdesk.Incident.Object.Name String TOPdesk incident’s object name.
TOPdesk.Incident.Object.Type.Id String TOPdesk incident’s object type ID.
TOPdesk.Incident.Object.Type.Name String TOPdesk incident’s object type name.
TOPdesk.Incident.Object.Make.Id String TOPdesk incident’s object make ID.
TOPdesk.Incident.Object.Make.Name String TOPdesk incident’s object make name.
TOPdesk.Incident.Object.Model.Id String TOPdesk incident’s object model ID.
TOPdesk.Incident.Object.Model.Name String TOPdesk incident’s object model name.
TOPdesk.Incident.Object.Branch.Id String TOPdesk incident’s object branch ID.
TOPdesk.Incident.Object.Branch.Name String TOPdesk incident’s object branch name.
TOPdesk.Incident.Object.Location.Id String TOPdesk incident’s object location ID.
TOPdesk.Incident.Object.Location.Name String TOPdesk incident’s object location name.
TOPdesk.Incident.Object.Specification String TOPdesk incident’s object specification.
TOPdesk.Incident.Object.SerialNumber String TOPdesk incident’s object serial number.
TOPdesk.Incident.Asset.Id String TOPdesk incident’s asset ID.
TOPdesk.Incident.Branch.ClientReferenceNumber String TOPdesk incident’s branch client reference number.
TOPdesk.Incident.Branch.TimeZone String TOPdesk incident’s branch timezone.
TOPdesk.Incident.Branch.ExtraA Unknown TOPdesk incident’s branch extra A.
TOPdesk.Incident.Branch.ExtraB Unknown TOPdesk incident’s branch extra B.
TOPdesk.Incident.Branch.Id String TOPdesk incident’s branch ID.
TOPdesk.Incident.Branch.Name String TOPdesk incident’s branch name.
TOPdesk.Incident.Location.Id String TOPdesk incident’s location ID.
TOPdesk.Incident.Location.Branch.ClientReferenceNumber String TOPdesk incident’s location branch client reference number.
TOPdesk.Incident.Location.Branch.TimeZone String TOPdesk incident’s location branch timezone.
TOPdesk.Incident.Location.Branch.ExtraA Unknown TOPdesk incident’s location branch extra A.
TOPdesk.Incident.Location.Branch.ExtraB Unknown TOPdesk incident’s location branch extra B.
TOPdesk.Incident.Location.Branch.Id String TOPdesk incident’s location branch ID.
TOPdesk.Incident.Location.Branch.Name String TOPdesk incident’s location branch name.
TOPdesk.Incident.Location.Name String TOPdesk incident’s location name.
TOPdesk.Incident.Location.Room String TOPdesk incident’s location room.
TOPdesk.Incident.Impact.Id String TOPdesk incident’s impact ID.
TOPdesk.Incident.Impact.Name String TOPdesk incident’s impact name.
TOPdesk.Incident.Urgency.Id String TOPdesk incident’s urgency ID.
TOPdesk.Incident.Urgency.Name String TOPdesk incident’s urgency name.
TOPdesk.Incident.Priority.Id String TOPdesk incident’s priority ID.
TOPdesk.Incident.Priority.Name String TOPdesk incident’s priority name.
TOPdesk.Incident.Duration.Id String TOPdesk incident’s duration ID.
TOPdesk.Incident.Duration.Name String TOPdesk incident’s duration name.
TOPdesk.Incident.TargetDate Date TOPdesk incident’s target date.
TOPdesk.Incident.Sla.Id String TOPdesk incident’s sla ID.
TOPdesk.Incident.OnHold Boolean TOPdesk incident’s on hold.
TOPdesk.Incident.OnHoldDate Unknown TOPdesk incident’s on hold date.
TOPdesk.Incident.OnHoldDuration Number TOPdesk incident’s on hold duration.
TOPdesk.Incident.FeedbackMessage Unknown TOPdesk incident’s feedback message.
TOPdesk.Incident.FeedbackRating Unknown TOPdesk incident’s feedback rating.
TOPdesk.Incident.Operator.Id String TOPdesk incident’s operator ID.
TOPdesk.Incident.Operator.Status String TOPdesk incident’s operator status.
TOPdesk.Incident.Operator.Name String TOPdesk incident’s operator name.
TOPdesk.Incident.OperatorGroup.Id String TOPdesk incident’s operator group ID.
TOPdesk.Incident.OperatorGroup.Name String TOPdesk incident’s operator group name.
TOPdesk.Incident.Supplier.Id String TOPdesk incident’s supplier ID.
TOPdesk.Incident.Supplier.Name String TOPdesk incident’s supplier name.
TOPdesk.Incident.Supplier.ForFirstLine Boolean TOPdesk incident’s supplier for first line.
TOPdesk.Incident.Supplier.ForSecondLine Boolean TOPdesk incident’s supplier for second line.
TOPdesk.Incident.ProcessingStatus.Id String TOPdesk incident’s processing status ID.
TOPdesk.Incident.ProcessingStatus.Name String TOPdesk incident’s processing status name.
TOPdesk.Incident.Completed Boolean TOPdesk incident’s completed.
TOPdesk.Incident.CompletedDate Unknown TOPdesk incident’s completed date.
TOPdesk.Incident.Closed Boolean TOPdesk incident’s closed.
TOPdesk.Incident.ClosedDate Unknown TOPdesk incident’s closed date.
TOPdesk.Incident.ClosureCode.Id String TOPdesk incident’s closure code ID.
TOPdesk.Incident.ClosureCode.Name String TOPdesk incident’s closure code name.
TOPdesk.Incident.TimeSpent Number TOPdesk incident’s time spent.
TOPdesk.Incident.TimeSpentFirstLine Number TOPdesk incident’s time spent first line
TOPdesk.Incident.TimeSpentSecondLineAndPartials Number TOPdesk incident’s time spent second line and partials.
TOPdesk.Incident.Costs Number TOPdesk incident’s costs.
TOPdesk.Incident.EscalationStatus String TOPdesk incident’s escalation status.
TOPdesk.Incident.EscalationReason.Id String TOPdesk incident’s escalation reason ID.
TOPdesk.Incident.EscalationReason.Name String TOPdesk incident’s escalation reason name.
TOPdesk.Incident.EscalationOperator.Id String TOPdesk incident’s escalation operator ID.
TOPdesk.Incident.EscalationOperator.Name String TOPdesk incident’s escalation operator name.
TOPdesk.Incident.CallDate Date TOPdesk incident’s call date.
TOPdesk.Incident.Creator.Id String TOPdesk incident’s creator ID.
TOPdesk.Incident.Creator.Name String TOPdesk incident’s creator name.
TOPdesk.Incident.CreationDate Date TOPdesk incident’s creation date.
TOPdesk.Incident.Modifier.Id String TOPdesk incident’s modifier ID.
TOPdesk.Incident.Modifier.Name String TOPdesk incident’s modifier name.
TOPdesk.Incident.ModificationDate Date TOPdesk incident’s modification date.
TOPdesk.Incident.MajorCall Boolean TOPdesk incident’s major call.
TOPdesk.Incident.MajorCallObject.Name String TOPdesk incident’s Major call object name.
TOPdesk.Incident.MajorCallObject.Id String TOPdesk incident’s major call object ID.
TOPdesk.Incident.MajorCallObject.Status Number TOPdesk incident’s major call object status.
TOPdesk.Incident.MajorCallObject.MajorIncident Boolean TOPdesk incident’s major call object major incident.
TOPdesk.Incident.PublishToSsd Boolean TOPdesk incident’s publish to SSD.
TOPdesk.Incident.Monitored Boolean TOPdesk incident’s monitored.
TOPdesk.Incident.ExpectedTimeSpent Number TOPdesk incident’s expected time spent.
TOPdesk.Incident.MainIncident Unknown TOPdesk incident’s main incident.
TOPdesk.Incident.PartialIncidents.Link String TOPdesk incident’s partial incidents link.
TOPdesk.Incident.OptionalFields1.Boolean1 Boolean TOPdesk incident’s optional fields1 boolean1.
TOPdesk.Incident.OptionalFields1.Boolean2 Boolean TOPdesk incident’s optional fields1 boolean2.
TOPdesk.Incident.OptionalFields1.Boolean3 Boolean TOPdesk incident’s optional fields1 boolean3.
TOPdesk.Incident.OptionalFields1.Boolean4 Boolean TOPdesk incident’s optional fields1 boolean4.
TOPdesk.Incident.OptionalFields1.Boolean5 Boolean TOPdesk incident’s optional fields1 boolean5.
TOPdesk.Incident.OptionalFields1.Number1 Number TOPdesk incident’s optional fields1 number1.
TOPdesk.Incident.OptionalFields1.Number2 Number TOPdesk incident’s optional fields1 number2.
TOPdesk.Incident.OptionalFields1.Number3 Number TOPdesk incident’s optional fields1 number3.
TOPdesk.Incident.OptionalFields1.Number4 Number TOPdesk incident’s optional fields1 number4.
TOPdesk.Incident.OptionalFields1.Number5 Number TOPdesk incident’s optional fields1 number5.
TOPdesk.Incident.OptionalFields1.Date1 Date TOPdesk incident’s optional fields1 date1.
TOPdesk.Incident.OptionalFields1.Date2 Date TOPdesk incident’s optional fields1 date2.
TOPdesk.Incident.OptionalFields1.Date3 Date TOPdesk incident’s optional fields1 date3.
TOPdesk.Incident.OptionalFields1.Date4 Date TOPdesk incident’s optional fields1 date4.
TOPdesk.Incident.OptionalFields1.Date5 Date TOPdesk incident’s optional fields1 date5.
TOPdesk.Incident.OptionalFields1.Text1 String TOPdesk incident’s optional fields1 text1.
TOPdesk.Incident.OptionalFields1.Text2 String TOPdesk incident’s optional fields1 text2.
TOPdesk.Incident.OptionalFields1.Text3 String TOPdesk incident’s optional fields1 text3.
TOPdesk.Incident.OptionalFields1.Text4 String TOPdesk incident’s optional fields1 text4.
TOPdesk.Incident.OptionalFields1.Text5 String TOPdesk incident’s optional fields1 text5.
TOPdesk.Incident.OptionalFields1.Memo1 String TOPdesk incident’s optional fields1 memo1.
TOPdesk.Incident.OptionalFields1.Memo2 String TOPdesk incident’s optional fields1 memo2.
TOPdesk.Incident.OptionalFields1.Memo3 String TOPdesk incident’s optional fields1 memo3.
TOPdesk.Incident.OptionalFields1.Memo4 String TOPdesk incident’s optional fields1 memo4.
TOPdesk.Incident.OptionalFields1.Memo5 String TOPdesk incident’s optional fields1 memo5.
TOPdesk.Incident.OptionalFields1.Searchlist1.Id String TOPdesk incident’s optional fields1 searchlist1 ID.
TOPdesk.Incident.OptionalFields1.Searchlist1.Name String TOPdesk incident’s optional fields1 searchlist1 name.
TOPdesk.Incident.OptionalFields1.Searchlist2.Id String TOPdesk incident’s optional fields1 searchlist2 ID.
TOPdesk.Incident.OptionalFields1.Searchlist2.Name String TOPdesk incident’s optional fields1 searchlist2 name.
TOPdesk.Incident.OptionalFields1.Searchlist3.Id String TOPdesk incident’s optional fields1 searchlist3 ID.
TOPdesk.Incident.OptionalFields1.Searchlist3.Name String TOPdesk incident’s optional fields1 searchlist3 name.
TOPdesk.Incident.OptionalFields1.Searchlist4.Id String TOPdesk incident’s optional fields1 searchlist4 ID.
TOPdesk.Incident.OptionalFields1.Searchlist4.Name String TOPdesk incident’s optional fields1 searchlist4 name.
TOPdesk.Incident.OptionalFields1.Searchlist5.Id String TOPdesk incident’s optional fields1 searchlist5 ID.
TOPdesk.Incident.OptionalFields1.Searchlist5.Name String TOPdesk incident’s optional fields1 searchlist5 name.
TOPdesk.Incident.OptionalFields2.Boolean1 Boolean TOPdesk incident’s optional fields2 boolean1.
TOPdesk.Incident.OptionalFields2.Boolean2 Boolean TOPdesk incident’s optional fields2 boolean2.
TOPdesk.Incident.OptionalFields2.Boolean3 Boolean TOPdesk incident’s optional fields2 boolean3.
TOPdesk.Incident.OptionalFields2.Boolean4 Boolean TOPdesk incident’s optional fields2 boolean4.
TOPdesk.Incident.OptionalFields2.Boolean5 Boolean TOPdesk incident’s optional fields2 boolean5.
TOPdesk.Incident.OptionalFields2.Number1 Number TOPdesk incident’s optional fields2 number1.
TOPdesk.Incident.OptionalFields2.Number2 Number TOPdesk incident’s optional fields2 number2.
TOPdesk.Incident.OptionalFields2.Number3 Number TOPdesk incident’s optional fields2 number3.
TOPdesk.Incident.OptionalFields2.Number4 Number TOPdesk incident’s optional fields2 number4.
TOPdesk.Incident.OptionalFields2.Number5 Number TOPdesk incident’s optional fields2 number5.
TOPdesk.Incident.OptionalFields2.Date1 Date TOPdesk incident’s optional fields2 date1.
TOPdesk.Incident.OptionalFields2.Date2 Date TOPdesk incident’s optional fields2 date2.
TOPdesk.Incident.OptionalFields2.Date3 Date TOPdesk incident’s optional fields2 date3.
TOPdesk.Incident.OptionalFields2.Date4 Date TOPdesk incident’s optional fields2 date4.
TOPdesk.Incident.OptionalFields2.Date5 Date TOPdesk incident’s optional fields2 date5.
TOPdesk.Incident.OptionalFields2.Text1 String TOPdesk incident’s optional fields2 text1.
TOPdesk.Incident.OptionalFields2.Text2 String TOPdesk incident’s optional fields2 text2.
TOPdesk.Incident.OptionalFields2.Text3 String TOPdesk incident’s optional fields2.text3.
TOPdesk.Incident.OptionalFields2.Text4 String TOPdesk incident’s optional fields2 text4.
TOPdesk.Incident.OptionalFields2.Text5 String TOPdesk incident’s optional fields2 text5.
TOPdesk.Incident.OptionalFields2.Memo1 String TOPdesk incident’s optional fields2 memo1.
TOPdesk.Incident.OptionalFields2.Memo2 String TOPdesk incident’s optional fields2 memo2.
TOPdesk.Incident.OptionalFields2.Memo3 String TOPdesk incident’s optional fields2 memo3.
TOPdesk.Incident.OptionalFields2.Memo4 String TOPdesk incident’s optional fields2 memo4.
TOPdesk.Incident.OptionalFields2.Memo5 String TOPdesk incident’s optional fields2 memo5.
TOPdesk.Incident.OptionalFields2.Searchlist1.Id String TOPdesk incident’s optional fields2 searchlist1 ID.
TOPdesk.Incident.OptionalFields2.Searchlist1.Name String TOPdesk incident’s optional fields2 searchlist1 name.
TOPdesk.Incident.OptionalFields2.Searchlist2.Id String TOPdesk incident’s optional fields2 searchlist2 ID.
TOPdesk.Incident.OptionalFields2.Searchlist2.Name String TOPdesk incident’s optional fields2 searchlist2 name.
TOPdesk.Incident.OptionalFields2.Searchlist3.Id String TOPdesk incident’s optional fields2 searchlist3 ID.
TOPdesk.Incident.OptionalFields2.Searchlist3.Name String TOPdesk incident’s optional fields2 searchlist3 name.
TOPdesk.Incident.OptionalFields2.Searchlist4.Id String TOPdesk incident’s optional fields2 searchlist4 ID.
TOPdesk.Incident.OptionalFields2.Searchlist4.Name String TOPdesk incident’s optional fields2 searchlist4 name.
TOPdesk.Incident.OptionalFields2.Searchlist5.Id String TOPdesk incident’s optional fields2 searchlist5 ID.
TOPdesk.Incident.OptionalFields2.Searchlist5.Name String TOPdesk incident’s optional fields2 searchlist5 name.
TOPdesk.Incident.ExternalLinks.Id String TOPdesk incident’s external links ID.
TOPdesk.Incident.ExternalLinks.Type String TOPdesk incident’s external links type.
TOPdesk.Incident.ExternalLinks.Date Date TOPdesk incident’s external links date.

Command Example

!topdesk-incident-archive archive_reason_id=some-reason-id-1 number=XSOAR-1337

Context Example

{
    "TOPdesk": {
        "Incident": {
            "Action": "/tas/api/incidents/id/some-id/actions",
            "ArchivingReason": {
                "Id": "some-reason-id-1",
                "Name": "No longer valid"
            },
            "Attachments": "/tas/api/incidents/id/some-id/attachments",
            "BriefDescription": "",
            "CallDate": "2021-03-21T17:38:03.007+0000",
            "Caller": {
                "Branch": {
                    "ClientReferenceNumber": null,
                    "ExtraA": null,
                    "ExtraB": null,
                    "Id": null,
                    "Name": "",
                    "TimeZone": null
                },
                "DynamicName": "xsoar_test"
            },
            "Closed": false,
            "Completed": false,
            "CreationDate": "2021-03-21T17:38:03.007+0000",
            "Creator": {
                "Id": "some-operator-id",
                "Name": "Xsoar - Operator"
            },
            "ExternalNumber": "",
            "Id": "some-id",
            "MajorCall": false,
            "ModificationDate": "2021-03-24T08:15:06.000+0000",
            "Modifier": {
                "Id": "some-operator-id",
                "Name": "Xsoar - Operator"
            },
            "Monitored": false,
            "Number": "XSOAR-1337",
            "OnHold": false,
            "OptionalFields1": {
                "Searchlist1": {
                    "Id": "some-id-33",
                    "Name": "Searchlist 1"
                },
                "Searchlist3": {
                    "Id": "some-id-34",
                    "Name": "Searchlist 3"
                },
                "Text1": "",
                "Text2": "",
                "Text3": "",
                "Text4": "",
                "Text5": ""
            },
            "OptionalFields2": {
                "Text1": "",
                "Text2": "",
                "Text3": "",
                "Text4": "",
                "Text5": ""
            },
            "ProcessingStatus": {
                "Id": "some-processing-id",
                "Name": "Logged"
            },
            "PublishToSsd": false,
            "Requests": "/tas/api/incidents/id/some-id/requests",
            "Responded": false,
            "Status": "firstLineArchived"
        }
    }
}

Human Readable Output

TOPdesk incidents

Id Number Line CallerName Status
some-id XSOAR-1337 firstLineArchived xsoar_test Logged

topdesk-incident-unarchive


Unarchive an incident in TOPdesk.

Permissions

Operator: Incident write permission and archiving permission; Category/Branch/Operator filters apply;

Person: No access

Base Command

topdesk-incident-unarchive

Input

Argument Name Description Required
id The incident ID. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
number. The incident number. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional

Context Output

Path Type Description
TOPdesk.Incident.Id String TOPdesk incident’s ID.
TOPdesk.Incident.Status String TOPdesk incident’s status.
TOPdesk.Incident.Number String TOPdesk incident’s number.
TOPdesk.Incident.Request String TOPdesk incident’s request.
TOPdesk.Incident.Requests String TOPdesk incident’s requests.
TOPdesk.Incident.Action String TOPdesk incident’s action.
TOPdesk.Incident.Attachments String TOPdesk incident’s attachments.
TOPdesk.Incident.Caller.Id String TOPdesk incident’s caller ID.
TOPdesk.Incident.Caller.DynamicName String TOPdesk incident’s caller dynamic name.
TOPdesk.Incident.Caller.Branch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.Caller.Branch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.Caller.Branch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.Caller.Branch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.Caller.Branch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.Caller.Branch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.CallerBranch.ClientReferenceNumber String TOPdesk incident’s caller branch client reference number.
TOPdesk.Incident.CallerBranch.TimeZone String TOPdesk incident’s caller branch timezone.
TOPdesk.Incident.CallerBranch.ExtraA Unknown TOPdesk incident’s caller branch extra A.
TOPdesk.Incident.CallerBranch.ExtraB Unknown TOPdesk incident’s caller branch extra B.
TOPdesk.Incident.CallerBranch.Id String TOPdesk incident’s caller branch ID.
TOPdesk.Incident.CallerBranch.Name String TOPdesk incident’s caller branch name.
TOPdesk.Incident.BranchExtraFieldA Unknown TOPdesk incident’s branch extra field A.
TOPdesk.Incident.BranchExtraFieldB Unknown TOPdesk incident’s branch extra field B.
TOPdesk.Incident.BriefDescription String TOPdesk incident’s brief description.
TOPdesk.Incident.ExternalNumber String TOPdesk incident’s external number.
TOPdesk.Incident.Category.Id String TOPdesk incident’s category ID.
TOPdesk.Incident.Category.Name String TOPdesk incident’s category name.
TOPdesk.Incident.Subcategory.Id String TOPdesk incident’s subcategory ID.
TOPdesk.Incident.Subcategory.Name String TOPdesk incident’s subcategory name.
TOPdesk.Incident.CallType.Id String TOPdesk incident’s call type ID.
TOPdesk.Incident.CallType.Name String TOPdesk incident’s call type name.
TOPdesk.Incident.EntryType.Id String TOPdesk incident’s entry type ID.
TOPdesk.Incident.EntryType.Name String TOPdesk incident’s entry type name.
TOPdesk.Incident.Object.Id String TOPdesk incident’s object ID.
TOPdesk.Incident.Object.Name String TOPdesk incident’s object name.
TOPdesk.Incident.Object.Type.Id String TOPdesk incident’s object type ID.
TOPdesk.Incident.Object.Type.Name String TOPdesk incident’s object type name.
TOPdesk.Incident.Object.Make.Id String TOPdesk incident’s object make ID.
TOPdesk.Incident.Object.Make.Name String TOPdesk incident’s object make name.
TOPdesk.Incident.Object.Model.Id String TOPdesk incident’s object model ID.
TOPdesk.Incident.Object.Model.Name String TOPdesk incident’s object model name.
TOPdesk.Incident.Object.Branch.Id String TOPdesk incident’s object branch ID.
TOPdesk.Incident.Object.Branch.Name String TOPdesk incident’s object branch name.
TOPdesk.Incident.Object.Location.Id String TOPdesk incident’s object location ID.
TOPdesk.Incident.Object.Location.Name String TOPdesk incident’s object location name.
TOPdesk.Incident.Object.Specification String TOPdesk incident’s object specification.
TOPdesk.Incident.Object.SerialNumber String TOPdesk incident’s object serial number.
TOPdesk.Incident.Asset.Id String TOPdesk incident’s asset ID.
TOPdesk.Incident.Branch.ClientReferenceNumber String TOPdesk incident’s branch client reference number.
TOPdesk.Incident.Branch.TimeZone String TOPdesk incident’s branch timezone.
TOPdesk.Incident.Branch.ExtraA Unknown TOPdesk incident’s branch extra A.
TOPdesk.Incident.Branch.ExtraB Unknown TOPdesk incident’s branch extra B.
TOPdesk.Incident.Branch.Id String TOPdesk incident’s branch ID.
TOPdesk.Incident.Branch.Name String TOPdesk incident’s branch name.
TOPdesk.Incident.Location.Id String TOPdesk incident’s location ID.
TOPdesk.Incident.Location.Branch.ClientReferenceNumber String TOPdesk incident’s location branch client reference number.
TOPdesk.Incident.Location.Branch.TimeZone String TOPdesk incident’s location branch timezone.
TOPdesk.Incident.Location.Branch.ExtraA Unknown TOPdesk incident’s location branch extra A.
TOPdesk.Incident.Location.Branch.ExtraB Unknown TOPdesk incident’s location branch extra B.
TOPdesk.Incident.Location.Branch.Id String TOPdesk incident’s location branch ID.
TOPdesk.Incident.Location.Branch.Name String TOPdesk incident’s location branch name.
TOPdesk.Incident.Location.Name String TOPdesk incident’s location name.
TOPdesk.Incident.Location.Room String TOPdesk incident’s location room.
TOPdesk.Incident.Impact.Id String TOPdesk incident’s impact ID.
TOPdesk.Incident.Impact.Name String TOPdesk incident’s impact name.
TOPdesk.Incident.Urgency.Id String TOPdesk incident’s urgency ID.
TOPdesk.Incident.Urgency.Name String TOPdesk incident’s urgency name.
TOPdesk.Incident.Priority.Id String TOPdesk incident’s priority ID.
TOPdesk.Incident.Priority.Name String TOPdesk incident’s priority name.
TOPdesk.Incident.Duration.Id String TOPdesk incident’s duration ID.
TOPdesk.Incident.Duration.Name String TOPdesk incident’s duration name.
TOPdesk.Incident.TargetDate Date TOPdesk incident’s target date.
TOPdesk.Incident.Sla.Id String TOPdesk incident’s sla ID.
TOPdesk.Incident.OnHold Boolean TOPdesk incident’s on hold.
TOPdesk.Incident.OnHoldDate Unknown TOPdesk incident’s on hold date.
TOPdesk.Incident.OnHoldDuration Number TOPdesk incident’s on hold duration.
TOPdesk.Incident.FeedbackMessage Unknown TOPdesk incident’s feedback message.
TOPdesk.Incident.FeedbackRating Unknown TOPdesk incident’s feedback rating.
TOPdesk.Incident.Operator.Id String TOPdesk incident’s operator ID.
TOPdesk.Incident.Operator.Status String TOPdesk incident’s operator status.
TOPdesk.Incident.Operator.Name String TOPdesk incident’s operator name.
TOPdesk.Incident.OperatorGroup.Id String TOPdesk incident’s operator group ID.
TOPdesk.Incident.OperatorGroup.Name String TOPdesk incident’s operator group name.
TOPdesk.Incident.Supplier.Id String TOPdesk incident’s supplier ID.
TOPdesk.Incident.Supplier.Name String TOPdesk incident’s supplier name.
TOPdesk.Incident.Supplier.ForFirstLine Boolean TOPdesk incident’s supplier for first line.
TOPdesk.Incident.Supplier.ForSecondLine Boolean TOPdesk incident’s supplier for second line.
TOPdesk.Incident.ProcessingStatus.Id String TOPdesk incident’s processing status ID.
TOPdesk.Incident.ProcessingStatus.Name String TOPdesk incident’s processing status name.
TOPdesk.Incident.Completed Boolean TOPdesk incident’s completed.
TOPdesk.Incident.CompletedDate Unknown TOPdesk incident’s completed date.
TOPdesk.Incident.Closed Boolean TOPdesk incident’s closed.
TOPdesk.Incident.ClosedDate Unknown TOPdesk incident’s closed date.
TOPdesk.Incident.ClosureCode.Id String TOPdesk incident’s closure code ID.
TOPdesk.Incident.ClosureCode.Name String TOPdesk incident’s closure code name.
TOPdesk.Incident.TimeSpent Number TOPdesk incident’s time spent.
TOPdesk.Incident.TimeSpentFirstLine Number TOPdesk incident’s time spent first line
TOPdesk.Incident.TimeSpentSecondLineAndPartials Number TOPdesk incident’s time spent second line and partials.
TOPdesk.Incident.Costs Number TOPdesk incident’s costs.
TOPdesk.Incident.EscalationStatus String TOPdesk incident’s escalation status.
TOPdesk.Incident.EscalationReason.Id String TOPdesk incident’s escalation reason ID.
TOPdesk.Incident.EscalationReason.Name String TOPdesk incident’s escalation reason name.
TOPdesk.Incident.EscalationOperator.Id String TOPdesk incident’s escalation operator ID.
TOPdesk.Incident.EscalationOperator.Name String TOPdesk incident’s escalation operator name.
TOPdesk.Incident.CallDate Date TOPdesk incident’s call date.
TOPdesk.Incident.Creator.Id String TOPdesk incident’s creator ID.
TOPdesk.Incident.Creator.Name String TOPdesk incident’s creator name.
TOPdesk.Incident.CreationDate Date TOPdesk incident’s creation date.
TOPdesk.Incident.Modifier.Id String TOPdesk incident’s modifier ID.
TOPdesk.Incident.Modifier.Name String TOPdesk incident’s modifier name.
TOPdesk.Incident.ModificationDate Date TOPdesk incident’s modification date.
TOPdesk.Incident.MajorCall Boolean TOPdesk incident’s major call.
TOPdesk.Incident.MajorCallObject.Name String TOPdesk incident’s Major call object name.
TOPdesk.Incident.MajorCallObject.Id String TOPdesk incident’s major call object ID.
TOPdesk.Incident.MajorCallObject.Status Number TOPdesk incident’s major call object status.
TOPdesk.Incident.MajorCallObject.MajorIncident Boolean TOPdesk incident’s major call object major incident.
TOPdesk.Incident.PublishToSsd Boolean TOPdesk incident’s publish to SSD.
TOPdesk.Incident.Monitored Boolean TOPdesk incident’s monitored.
TOPdesk.Incident.ExpectedTimeSpent Number TOPdesk incident’s expected time spent.
TOPdesk.Incident.MainIncident Unknown TOPdesk incident’s main incident.
TOPdesk.Incident.PartialIncidents.Link String TOPdesk incident’s partial incidents link.
TOPdesk.Incident.OptionalFields1.Boolean1 Boolean TOPdesk incident’s optional fields1 boolean1.
TOPdesk.Incident.OptionalFields1.Boolean2 Boolean TOPdesk incident’s optional fields1 boolean2.
TOPdesk.Incident.OptionalFields1.Boolean3 Boolean TOPdesk incident’s optional fields1 boolean3.
TOPdesk.Incident.OptionalFields1.Boolean4 Boolean TOPdesk incident’s optional fields1 boolean4.
TOPdesk.Incident.OptionalFields1.Boolean5 Boolean TOPdesk incident’s optional fields1 boolean5.
TOPdesk.Incident.OptionalFields1.Number1 Number TOPdesk incident’s optional fields1 number1.
TOPdesk.Incident.OptionalFields1.Number2 Number TOPdesk incident’s optional fields1 number2.
TOPdesk.Incident.OptionalFields1.Number3 Number TOPdesk incident’s optional fields1 number3.
TOPdesk.Incident.OptionalFields1.Number4 Number TOPdesk incident’s optional fields1 number4.
TOPdesk.Incident.OptionalFields1.Number5 Number TOPdesk incident’s optional fields1 number5.
TOPdesk.Incident.OptionalFields1.Date1 Date TOPdesk incident’s optional fields1 date1.
TOPdesk.Incident.OptionalFields1.Date2 Date TOPdesk incident’s optional fields1 date2.
TOPdesk.Incident.OptionalFields1.Date3 Date TOPdesk incident’s optional fields1 date3.
TOPdesk.Incident.OptionalFields1.Date4 Date TOPdesk incident’s optional fields1 date4.
TOPdesk.Incident.OptionalFields1.Date5 Date TOPdesk incident’s optional fields1 date5.
TOPdesk.Incident.OptionalFields1.Text1 String TOPdesk incident’s optional fields1 text1.
TOPdesk.Incident.OptionalFields1.Text2 String TOPdesk incident’s optional fields1 text2.
TOPdesk.Incident.OptionalFields1.Text3 String TOPdesk incident’s optional fields1 text3.
TOPdesk.Incident.OptionalFields1.Text4 String TOPdesk incident’s optional fields1 text4.
TOPdesk.Incident.OptionalFields1.Text5 String TOPdesk incident’s optional fields1 text5.
TOPdesk.Incident.OptionalFields1.Memo1 String TOPdesk incident’s optional fields1 memo1.
TOPdesk.Incident.OptionalFields1.Memo2 String TOPdesk incident’s optional fields1 memo2.
TOPdesk.Incident.OptionalFields1.Memo3 String TOPdesk incident’s optional fields1 memo3.
TOPdesk.Incident.OptionalFields1.Memo4 String TOPdesk incident’s optional fields1 memo4.
TOPdesk.Incident.OptionalFields1.Memo5 String TOPdesk incident’s optional fields1 memo5.
TOPdesk.Incident.OptionalFields1.Searchlist1.Id String TOPdesk incident’s optional fields1 searchlist1 ID.
TOPdesk.Incident.OptionalFields1.Searchlist1.Name String TOPdesk incident’s optional fields1 searchlist1 name.
TOPdesk.Incident.OptionalFields1.Searchlist2.Id String TOPdesk incident’s optional fields1 searchlist2 ID.
TOPdesk.Incident.OptionalFields1.Searchlist2.Name String TOPdesk incident’s optional fields1 searchlist2 name.
TOPdesk.Incident.OptionalFields1.Searchlist3.Id String TOPdesk incident’s optional fields1 searchlist3 ID.
TOPdesk.Incident.OptionalFields1.Searchlist3.Name String TOPdesk incident’s optional fields1 searchlist3 name.
TOPdesk.Incident.OptionalFields1.Searchlist4.Id String TOPdesk incident’s optional fields1 searchlist4 ID.
TOPdesk.Incident.OptionalFields1.Searchlist4.Name String TOPdesk incident’s optional fields1 searchlist4 name.
TOPdesk.Incident.OptionalFields1.Searchlist5.Id String TOPdesk incident’s optional fields1 searchlist5 ID.
TOPdesk.Incident.OptionalFields1.Searchlist5.Name String TOPdesk incident’s optional fields1 searchlist5 name.
TOPdesk.Incident.OptionalFields2.Boolean1 Boolean TOPdesk incident’s optional fields2 boolean1.
TOPdesk.Incident.OptionalFields2.Boolean2 Boolean TOPdesk incident’s optional fields2 boolean2.
TOPdesk.Incident.OptionalFields2.Boolean3 Boolean TOPdesk incident’s optional fields2 boolean3.
TOPdesk.Incident.OptionalFields2.Boolean4 Boolean TOPdesk incident’s optional fields2 boolean4.
TOPdesk.Incident.OptionalFields2.Boolean5 Boolean TOPdesk incident’s optional fields2 boolean5.
TOPdesk.Incident.OptionalFields2.Number1 Number TOPdesk incident’s optional fields2 number1.
TOPdesk.Incident.OptionalFields2.Number2 Number TOPdesk incident’s optional fields2 number2.
TOPdesk.Incident.OptionalFields2.Number3 Number TOPdesk incident’s optional fields2 number3.
TOPdesk.Incident.OptionalFields2.Number4 Number TOPdesk incident’s optional fields2 number4.
TOPdesk.Incident.OptionalFields2.Number5 Number TOPdesk incident’s optional fields2 number5.
TOPdesk.Incident.OptionalFields2.Date1 Date TOPdesk incident’s optional fields2 date1.
TOPdesk.Incident.OptionalFields2.Date2 Date TOPdesk incident’s optional fields2 date2.
TOPdesk.Incident.OptionalFields2.Date3 Date TOPdesk incident’s optional fields2 date3.
TOPdesk.Incident.OptionalFields2.Date4 Date TOPdesk incident’s optional fields2 date4.
TOPdesk.Incident.OptionalFields2.Date5 Date TOPdesk incident’s optional fields2 date5.
TOPdesk.Incident.OptionalFields2.Text1 String TOPdesk incident’s optional fields2 text1.
TOPdesk.Incident.OptionalFields2.Text2 String TOPdesk incident’s optional fields2 text2.
TOPdesk.Incident.OptionalFields2.Text3 String TOPdesk incident’s optional fields2.text3.
TOPdesk.Incident.OptionalFields2.Text4 String TOPdesk incident’s optional fields2 text4.
TOPdesk.Incident.OptionalFields2.Text5 String TOPdesk incident’s optional fields2 text5.
TOPdesk.Incident.OptionalFields2.Memo1 String TOPdesk incident’s optional fields2 memo1.
TOPdesk.Incident.OptionalFields2.Memo2 String TOPdesk incident’s optional fields2 memo2.
TOPdesk.Incident.OptionalFields2.Memo3 String TOPdesk incident’s optional fields2 memo3.
TOPdesk.Incident.OptionalFields2.Memo4 String TOPdesk incident’s optional fields2 memo4.
TOPdesk.Incident.OptionalFields2.Memo5 String TOPdesk incident’s optional fields2 memo5.
TOPdesk.Incident.OptionalFields2.Searchlist1.Id String TOPdesk incident’s optional fields2 searchlist1 ID.
TOPdesk.Incident.OptionalFields2.Searchlist1.Name String TOPdesk incident’s optional fields2 searchlist1 name.
TOPdesk.Incident.OptionalFields2.Searchlist2.Id String TOPdesk incident’s optional fields2 searchlist2 ID.
TOPdesk.Incident.OptionalFields2.Searchlist2.Name String TOPdesk incident’s optional fields2 searchlist2 name.
TOPdesk.Incident.OptionalFields2.Searchlist3.Id String TOPdesk incident’s optional fields2 searchlist3 ID.
TOPdesk.Incident.OptionalFields2.Searchlist3.Name String TOPdesk incident’s optional fields2 searchlist3 name.
TOPdesk.Incident.OptionalFields2.Searchlist4.Id String TOPdesk incident’s optional fields2 searchlist4 ID.
TOPdesk.Incident.OptionalFields2.Searchlist4.Name String TOPdesk incident’s optional fields2 searchlist4 name.
TOPdesk.Incident.OptionalFields2.Searchlist5.Id String TOPdesk incident’s optional fields2 searchlist5 ID.
TOPdesk.Incident.OptionalFields2.Searchlist5.Name String TOPdesk incident’s optional fields2 searchlist5 name.
TOPdesk.Incident.ExternalLinks.Id String TOPdesk incident’s external links ID.
TOPdesk.Incident.ExternalLinks.Type String TOPdesk incident’s external links type.
TOPdesk.Incident.ExternalLinks.Date Date TOPdesk incident’s external links date.

Command Example

!topdesk-incident-unarchive number=XSOAR-1337

Context Example

{
    "TOPdesk": {
        "Incident": {
            "Action": "/tas/api/incidents/id/some-id/actions",
            "Attachments": "/tas/api/incidents/id/some-id/attachments",
            "BriefDescription": "",
            "CallDate": "2021-03-21T17:38:03.007+0000",
            "Caller": {
                "Branch": {
                    "ClientReferenceNumber": null,
                    "ExtraA": null,
                    "ExtraB": null,
                    "Id": null,
                    "Name": "",
                    "TimeZone": null
                },
                "DynamicName": "xsoar_test"
            },
            "Closed": false,
            "Completed": false,
            "CreationDate": "2021-03-21T17:38:03.007+0000",
            "Creator": {
                "Id": "some-operator-id",
                "Name": "Xsoar - Operator"
            },
            "ExternalNumber": "",
            "Id": "some-id",
            "MajorCall": false,
            "ModificationDate": "2021-03-24T08:15:06.000+0000",
            "Modifier": {
                "Id": "some-operator-id",
                "Name": "Xsoar - Operator"
            },
            "Monitored": false,
            "Number": "XSOAR-1337",
            "OnHold": false,
            "OptionalFields1": {
                "Searchlist1": {
                    "Id": "some-id-33",
                    "Name": "Searchlist 1"
                },
                "Searchlist3": {
                    "Id": "some-id-34",
                    "Name": "Searchlist 3"
                },
                "Text1": "",
                "Text2": "",
                "Text3": "",
                "Text4": "",
                "Text5": ""
            },
            "OptionalFields2": {
                "Text1": "",
                "Text2": "",
                "Text3": "",
                "Text4": "",
                "Text5": ""
            },
            "ProcessingStatus": {
                "Id": "some-processing-id",
                "Name": "Logged"
            },
            "PublishToSsd": false,
            "Requests": "/tas/api/incidents/id/some-id/requests",
            "Responded": false,
            "Status": "firstLine"
        }
    }
}

Human Readable Output

TOPdesk incidents

Id Number Line CallerName Status
some-id XSOAR-1337 firstLine xsoar_test Logged

topdesk-incident-attachment-upload


Upload an attachment to an incident in TOPdesk.

Permissions

Operator: With edit permission on 1st/2nd line incident; Category/Branch/Operator filters apply

Person: Accessible; Person visibility settings apply.

Base Command

topdesk-incident-attachment-upload

Input

Argument Name Description Required
id The incident ID. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
number. The incident number. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
file Entry ID of the file to upload. Required
file_name In case specified entry contains more than one file, the given file name will be used. If not specified the first file in the entry will be used. Optional
invisible_for_caller Whether the uploaded file is invisible for the caller of the incident. Possible values are: true, false. Optional
file_description The description of the uploaded file. Optional

Context Output

Path Type Description
TOPdesk.Attachment.Id String Attachment’s ID.
TOPdesk.Attachment.FileName String Attachment’s file name.
TOPdesk.Attachment.DownloadUrl String Attachment’s download URL.
TOPdesk.Attachment.Size Number Attachment’s size.
TOPdesk.Attachment.Description String Attachment’s description.
TOPdesk.Attachment.InvisibleForCaller Boolean Attachment’s invisible for caller.
TOPdesk.Attachment.EntryDate Date Attachment’s entry date.
TOPdesk.Attachment.Operator.Id String Attachment’s operator ID.
TOPdesk.Attachment.Operator.Name String Attachment’s operator name.
TOPdesk.Attachment.Person Unknown Attachment’s person.

Command Example

!topdesk-incident-attachment-upload number=XSOAR-1337 file=932@some-file-entry

Context Example

{
    "TOPdesk": {
        "Attachment": {
            "DownloadUrl": "/tas/api/incidents/id/some-incident-id/attachments/some-id/download",
            "EntryDate": "2021-03-24T13:40:47.000+0000",
            "FileName": "tiny_upload_file",
            "Id": "some-id",
            "InvisibleForCaller": false,
            "Operator": {
              "Id": "some-operator-id",
              "Name": "xsoar operator a"
            }
        }
    }
}

Human Readable Output

TOPdesk Attachments

Id FileName DownloadUrl InvisibleForCaller EntryDate Operator
some-id tiny_upload_file /tas/api/incidents/id/some-incident-id/attachments/some-id/download False 2021-03-24T13:40:47.000+0000 xsoar operator a

Base Command

topdesk-incident-attachments-list

Input

Argument Name Description Required
id The incident ID. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
number. The incident number. An ID or a number must be set. If both are set incident with relevant ID will be updated. Optional
limit The limit for the amount of attachments to store in the Context Data. -1 stores all categories. Default value is 100. Optional

Context Output

Path Type Description
TOPdesk.Attachment.Id String Attachment’s ID.
TOPdesk.Attachment.FileName String Attachment’s file name.
TOPdesk.Attachment.DownloadUrl String Attachment’s download URL.
TOPdesk.Attachment.Size Number Attachment’s size.
TOPdesk.Attachment.Description String Attachment’s description.
TOPdesk.Attachment.InvisibleForCaller Boolean Attachment’s invisible for caller.
TOPdesk.Attachment.EntryDate Date Attachment’s entry date.
TOPdesk.Attachment.Operator.Id String Attachment’s operator ID.
TOPdesk.Attachment.Operator.Name String Attachment’s operator name.
TOPdesk.Attachment.Person Unknown Attachment’s person.

Command Example

!topdesk-incident-attachments-list number=XSOAR-1337

Context Example

{
    "TOPdesk": {
        "Attachment": {
            "DownloadUrl": "/tas/api/incidents/id/some-incident-id/attachments/some-id/download",
            "EntryDate": "2021-03-24T13:40:47.000+0000",
            "FileName": "tiny_upload_file",
            "Id": "some-id",
            "InvisibleForCaller": false,
            "Operator": {
              "Id": "some-operator-id",
              "Name": "xsoar operator a"
            }
        }
    }
}

Human Readable Output

TOPdesk Attachments

Id FileName DownloadUrl InvisibleForCaller EntryDate Operator
some-id tiny_upload_file /tas/api/incidents/id/some-incident-id/attachments/some-id/download False 2021-03-24T13:40:47.000+0000 xsoar operator a

topdesk-assets-list


Get list of assets.

Base Command

topdesk-assets-list

Input

Argument Name Description Required
start The offset at which to start listing the assets at. Must be greater or equal to 0. Default is 0. Optional
page_size The amount of assets to be returned per request. Must be between 1 and 100 or 0 for all assets. Default is 50. Optional
filter Supports a set of OData filters which can be combined with ‘and’ and ‘or’ assets. Filter expressions can also be grouped by parentheses. https://developers.topdesk.com/explorer/?page=assets#/Assets/getAssets. Optional
search_term Search assets by name. Optional
archived List only Archived or only Active devices. Leave empty for all. Optional
fields Additional fields to include in the response. Optional

Context Output

Path Type Description
TOPdesk.Asset.Archived Boolean Asset status, archived or not.
TOPdesk.Asset.Etag String Asset entry date.
TOPdesk.Asset.Id String Unique ID of the Asset.
TOPdesk.Asset.Text String Asset freetext field, often the name of the asset.

Command Example

!topdesk-assets-list page_size=10 fields="archived,etag,id,text,name,mac-address"

Context Example

{
  "TOPdesk": {
    "Asset": [
      {
        "Archived": false,
        "Etag": "2025-06-18T14:18:59.111         ",
        "Id": "4a5ef5e0-41fa-4a25-a5f4-8c4ea2780c69",
        "Text": "test.host"
      }
    ]
  }
}

Human Readable Output

TOPdesk assets

Archived Etag Id Text
false 2025-06-18T14:18:59.111 4a5ef5e0-41fa-4a25-a5f4-8c4ea2780c6 test.host

topdesk-asset-update


Update Asset Fields.

Base Command

topdesk-asset-update

Input

Argument Name Description Required
asset_id The Unique ID of the Asset. Required
data “A json with the fields that you want to configure: {‘asset_name’:’testasset’}.” Required

Context Output

Path Type Description
TOPdesk.Asset Dict Dictionary of all Asset Data specific to company

Command Example

!topdesk-asset-update asset_id="4a5ef5e0-41fa-4a25-a5f4-8c4ea2780c69" data="{\"edr-status\":\"Not OK\"}"

Context Example

{
......
}

Human Readable Output

Sucessfully Updated Asset

Configuration parameters

  • url — Server URL (e.g., https://topdesk.mydomain/tas/) (required)
  • credentials — Username (required)
  • isFetch — Fetch incidents
  • max_fetch — Maximum number of incidents per fetch
  • first_fetch — First fetch time (<number> <time unit>, e.g., 12 hours, 7 days, 3 months, 1 year)
  • defaultCallerId — Default Incident Caller ID
  • fetch_query — The query to use when fetching incidents
  • incidentType — Incident type
  • mirror_direction — Incident Mirroring Direction
  • comment_tag — Comment Entry Tag
  • work_notes_tag — Work Note Entry Tag
  • file_tag — File Entry Tag
  • close_incident — Close Mirrored Cortex XSOAR Incident
  • close_ticket — Close Mirrored TOPdesk Ticket
  • insecure — Trust any certificate (not secure)
  • proxy — Use system proxy settings
  • incidentFetchInterval — Incidents Fetch Interval

Commands (26)

  • get-mapping-fields

    Returns the list of fields to map in outgoing mirroring.

  • get-modified-remote-data

    Gets the list of incidents that were modified since the last update time. This method is used for debugging purposes. The get-modified-remote-data command is used as part of the Mirroring feature that was introduced in Cortex XSOAR version 6.1.

  • get-remote-data

    Gets remote data from a remote incident. This method does not update the current incident and should be used for debugging purposes only.

  • topdesk-archiving-reasons-list

    Get list of archiving reasons.

  • topdesk-asset-update

    Update Asset Fields.

  • topdesk-assets-list

    Get list of assets.

  • topdesk-branches-list

    Get list of branches.

  • topdesk-call-types-list

    Get list of call types.

  • topdesk-categories-list

    Get list of categories.

  • topdesk-deescalation-reasons-list

    Get list of deescalation reasons.

  • topdesk-entry-types-list

    Get list of entry types.

  • topdesk-escalation-reasons-list

    Get list of escalation reasons.

  • topdesk-incident-actions-list

    Get list of actions of a certain TOPdesk incident.

  • topdesk-incident-archive

    Archive an incident in TOPdesk.

  • topdesk-incident-attachment-upload

    Upload an attachment to an incident in TOPdesk.

  • topdesk-incident-attachments-list

    Get list of attachments of a certain TOPdesk incident.

  • topdesk-incident-create

    Create an incident in TOPdesk.

  • topdesk-incident-deescalate

    Deescalate an incident in TOPdesk.

  • topdesk-incident-escalate

    Escalate an incident in TOPdesk.

  • topdesk-incident-unarchive

    Unarchive an incident in TOPdesk.

  • topdesk-incident-update

    Update an incident in TOPdesk.

  • topdesk-incidents-list

    Get list of incidents.

  • topdesk-operators-list

    Get list of operators.

  • topdesk-persons-list

    Get list of persons.

  • topdesk-subcategories-list

    Get list of subcategories.

  • update-remote-system

    Updates the remote incident with local incident changes. This method is only used for debugging purposes and will not update the current incident.

import demistomock as demisto  # noqa: F401
import requests
from CommonServerPython import *  # noqa: F401

"""TOPdesk integration for Cortex XSOAR"""


import math
import os
import shutil
from collections.abc import Callable
from packaging.version import Version
from typing import Any

import dateparser
import urllib3

# Disable insecure warnings
urllib3.disable_warnings()

""" CONSTANTS """

INTEGRATION_NAME = "TOPdesk"
DATE_FORMAT = "%Y-%m-%dT%H:%M:%SZ"
DATE_FORMAT_FULL = "%Y-%m-%dT%H:%M:%S.%f%z"
MAX_API_PAGE_SIZE = 10000
FIRST_REST_API_VERSION_WITH_NEW_QUERY = "3.3.0"
TOPDESK_ARGS = ["processingStatus", "priority", "urgency", "impact"]
MIRROR_DIRECTION = {"None": None, "Incoming": "In", "Outgoing": "Out", "Incoming And Outgoing": "Both"}

""" CLIENT CLASS """


class Client(BaseClient):
    """Client class to interact with the TOPdesk service API"""

    def __init__(self, base_url, verify, auth):
        super().__init__(base_url=base_url, verify=verify, auth=auth)
        self._proxies = handle_proxy(proxy_param_name="proxy", checkbox_default_value=False)
        self.rest_api_new_query = self.rest_api_supports_new_query()
        self.ticket_type = "incident"

    def rest_api_supports_new_query(self) -> bool:
        """Initialize which query type is supported by requesting the TOPdeskRestAPI version.

        Return True if the version supports new FIQL type query and False otherwise.
        """
        try:
            rest_api_version = Version(self.get_single_endpoint("/version")["version"])

        except DemistoException as e:
            if "Error 401" in str(e):
                raise DemistoException("Authorization Error: make sure username and password are correctly set")
            if "[404] - Not Found" in str(e):
                raise DemistoException("Page Not Found: make sure the url is correctly set")
            else:
                raise e

        return rest_api_version >= Version(FIRST_REST_API_VERSION_WITH_NEW_QUERY)

    def get_list_with_query(
        self,
        list_type: str,
        start: int | None = None,
        page_size: int | None = None,
        query: str | None = None,
        modification_date_start: str | None = None,
        modification_date_end: str | None = None,
        creation_date_start: str | None = None,
        creation_date_end: str | None = None,
        fields: str | None = None,
    ) -> list[dict[str, Any]]:
        """Get list of objects that support start, page_size and query arguments.

        Args:
            list_type: "persons"/ "operators"/ "branches"/ "incidents"
            start: The offset at which to start listing the incidents at, default is 0.
            page_size: The amount of incidents to be returned per request, default is 10.
            query: Filter the incidents by this FIQL query.
            modification_date_start: Retrieve only incidents with modification date greater or equal to
                this day 00:00:00, using time zone of the logged in user or operator. <yyyy-mm-dd>
            modification_date_end: Retrieve only incidents with modification date smaller or equal to
                this day 23:59:59, using time zone of the logged in user or operator. <yyyy-mm-dd>
            creation_date_start: Retrieve only incidents with creation date greater or equal to
                this day 00:00:00, using time zone of the logged in user or operator. <yyyy-mm-dd>
            creation_date_end: Retrieve only incidents with creation date smaller or equal to
                this day 00:00:00, using time zone of the logged in user or operator. <yyyy-mm-dd>
            fields: Option to select fields for persons, branches and incidents.

        Return List of requested objects.
        """

        allowed_list_type = ["persons", "operators", "branches", "incidents"]
        if list_type not in allowed_list_type:
            raise ValueError(f"Cannot get list of type {list_type}.\n Only {allowed_list_type} are allowed.")
        url_suffix = f"/{list_type}"
        inline_parameters = False
        request_params: dict[str, Any] = {}
        if start:
            url_suffix = f"{url_suffix}?start={start}"
            inline_parameters = True

        if page_size:
            if inline_parameters:
                url_suffix = f"{url_suffix}&page_size={page_size}"
            else:
                url_suffix = f"{url_suffix}?page_size={page_size}"
                inline_parameters = True

        if list_type == "incidents":
            new_query = self.rest_api_new_query

        else:
            new_query = True

        if fields:
            qfield = "fields"
            if list_type == "persons" or list_type == "branches":
                qfield = "$" + qfield

            if inline_parameters:
                url_suffix = f"{url_suffix}&{qfield}={fields}"
            else:
                url_suffix = f"{url_suffix}?{qfield}={fields}"
                inline_parameters = True

        query = self.convert_query_types(query, new_query)

        url_suffix = self.add_query_to_request(query, url_suffix, new_query, inline_parameters)

        if modification_date_start:
            request_params["modification_date_start"] = modification_date_start

        if modification_date_end:
            request_params["modification_date_end"] = modification_date_end

        if creation_date_start:
            request_params["creation_date_start"] = creation_date_start

        if creation_date_end:
            request_params["creation_date_end"] = creation_date_end

        result = []
        try:
            result = self._http_request(method="GET", url_suffix=url_suffix, json_data=request_params)
        except Exception:
            demisto.debug("No items found")
            result = []
        return result

    def get_asset_list_with_query(
        self,
        list_type: str,
        start: int | None = None,
        page_size: int | None = None,
        query: str | None = None,
        fields: str | None = None,
        search_term: str | None = None,
        archived: bool | None = None,
    ) -> dict[str, Any]:
        """Get list of objects that support start, page_size and query arguments.

        Args:
            list_type: "assets"
            start: The offset at which to start listing the incidents at, default is 0.
            page_size: The amount of incidents to be returned per request, default is 10.
            query: Filter the Assets by this odata filter.
            fields: Option to select fields for persons, branches and incidents.
            search_term: Optional Search Term to find assets
            archived: Optional Boolean to filter assets based on whether they are archived or not. Default is None.

        Return List of requested objects.
        """

        allowed_list_type = ["assets"]

        if list_type not in allowed_list_type:
            raise ValueError(f"Cannot get list of type {list_type}.\n Only {allowed_list_type} are allowed.")
        else:
            url_suffix = f"assetmgmt/{list_type}"

        request_params: dict[str, Any] = assign_params(
            archived=archived, pageStart=start, pageSize=page_size, fields=fields, searchTerm=search_term
        )
        if query:
            request_params["$filter"] = query

        try:
            result = self._http_request(method="GET", url_suffix=url_suffix, params=request_params)

        except Exception:
            demisto.debug("No items found")
            result = {}
        return result

    def get_list(self, endpoint: str) -> list[dict[str, Any]]:
        """Get list of objects using the API endpoint."""

        return self._http_request(
            method="GET",
            url_suffix=f"{endpoint}",
        )

    def get_single_endpoint(self, endpoint: str) -> dict[str, Any]:
        """Get an object using the API endpoint."""

        return self._http_request(
            method="GET",
            url_suffix=f"{endpoint}",
        )

    def create_incident(self, args: dict[str, Any] = {}) -> dict[str, Any]:
        """Create incident in TOPdesk.

        Args:
            args: The args for creating. Caller must be specified to create incident.

        Return the new incident on success or the API error otherwise.
        """

        if not args.get("caller", None):
            if not demisto.params().get("defaultCallerId"):
                raise ValueError("Caller must be specified to create incident.")
            else:
                args["caller"] = demisto.params().get("defaultCallerId")

        request_params = prepare_touch_request_params(args)

        return self._http_request(method="POST", url_suffix="/incidents/", json_data=request_params)

    def update_asset(self, args: dict[str, Any] = {}) -> dict[str, Any]:
        """Update an Asset in Topdesk.

        Args:
            args: The args for Updating. Must contain an asset_id and data to be updated.

        Return success or the API error otherwise on failure.
        """

        asset_id = args.get("asset_id", None)
        data = args.get("data", None)
        params = {"excludeActions": "false"}

        if isinstance(data, str):
            data = json.loads(data)

        if asset_id and data:
            return self._http_request(method="POST", url_suffix=f"/assetmgmt/assets/{asset_id}", json_data=data, params=params)

        if not asset_id and data:
            raise DemistoException("Invalid arguments provided.")

        return self._http_request(method="POST", url_suffix=f"/assetmgmt/assets/{asset_id}", json_data=data, params=params)

    def update_incident(self, args: dict[str, Any]) -> dict[str, Any]:
        """Update incident in TOPdesk.

        Args:
            args: The args for updating. Either id or number must be specified to update incident.

        Return the updated incident on success or the API error otherwise.
        """

        if not args.get("id", None) and not args.get("number", None):
            raise ValueError("Either id or number must be specified to update incident.")

        if args.get("id", None):
            endpoint = f"/incidents/id/{args['id']}"
        else:
            endpoint = f"/incidents/number/{args['number']}"

        return self._http_request(method="PUT", url_suffix=endpoint, json_data=prepare_touch_request_params(args))

    def incident_do(
        self, action: str, incident_id: str | None, incident_number: str | None, reason_id: str | None
    ) -> dict[str, Any]:
        """Preform action on TOPdesk incident with specified reason_id if needed.
        This function implements "escalate"/ "deescalate"/ "archive"/ "unarchive" commands.

        Args:
            action: "escalate"/ "deescalate"/ "archive"/ "unarchive"
            incident_id: The incident id to preform the action on.
            incident_number: The incident number to preform the action on.
                If both id and number are specified, id will be used.
            reason_id: The reason id for the specified action.

        Return the updated incident on success or the API error otherwise.
        """
        allowed_actions = ["escalate", "deescalate", "archive", "unarchive"]
        request_params: dict[str, Any] = {}
        if action not in allowed_actions:
            raise ValueError(f"Endpoint {action} not in allowed endpoint list: {allowed_actions}")

        if not incident_id and not incident_number:
            raise ValueError("Either id or number must be specified to update incident.")

        if incident_id:
            endpoint = f"/incidents/id/{incident_id}"
        else:
            endpoint = f"/incidents/number/{incident_number}"

        if reason_id:
            request_params["id"] = reason_id

        return self._http_request(method="PUT", url_suffix=f"{endpoint}/{action}", json_data=request_params)

    def attachment_upload(
        self,
        incident_id: str | None,
        incident_number: str | None,
        file_entry: str,
        file_name: str,
        invisible_for_caller: bool,
        file_description: str | None,
    ):
        """Upload an attachment from file_entry to TOPdesk incident.

        Args:
            incident_id: The incident id to upload attachment to.
            incident_number: The incident number to upload attachment to.
                If both id and number are specified, id will be used.
            file_entry: The file entry id indicating the attachment to upload
            file_name: The file name to upload.
            invisible_for_caller: Whether the attachment will be visible for the caller or not.
            file_description: Description of the file to upload. Will be uploaded alongside.

        Return attachment response from API.
        """
        if not incident_id and not incident_number:
            raise ValueError("Either id or number must be specified to update incident.")

        if incident_id:
            endpoint = f"/incidents/id/{incident_id}"
        else:
            endpoint = f"/incidents/number/{incident_number}"

        request_params: dict[str, Any] = {}
        request_params["invisibleForCaller"] = invisible_for_caller
        if file_description:
            request_params["description"] = file_description

        shutil.copyfile(demisto.getFilePath(file_entry)["path"], file_name)
        try:
            with open(file_name, "rb") as file_obj:
                files = {"file": file_obj}
                response = self._http_request(
                    method="POST", url_suffix=f"{endpoint}/attachments", files=files, data=request_params
                )
        except Exception as e:
            os.remove(file_name)
            raise e
        os.remove(file_name)
        return response

    def list_attachments(self, incident_id: str | None, incident_number: str | None) -> list[dict[str, Any]]:
        """List attachments of a given incident.

        Args:
            incident_id: The incident id to list attachments of.
            incident_number: The incident number to list attachments of.
                If both id and number are specified, id will be used.

        Return list of attachments of the incident.
        """
        if not incident_id and not incident_number:
            raise ValueError("Either id or number must be specified to update incident.")

        if incident_id:
            attachments = self.get_list(f"/incidents/id/{incident_id}/attachments")

        else:
            attachments = self.get_list(f"/incidents/number/{incident_number}/attachments")

        return attachments

    def list_actions(self, incident_id: str | None, incident_number: str | None) -> list[dict[str, Any]]:
        """List actions of a given incident.

        Args:
            incident_id: The incident id to list actions of.
            incident_number: The incident number to list actions of.
                If both id and number are specified, id will be used.

        Return list of actions of the incident.
        """
        if not incident_id and not incident_number:
            raise ValueError("Either id or number must be specified to update incident.")

        if incident_id:
            actions = self.get_list(f"/incidents/id/{incident_id}/actions")

        else:
            actions = self.get_list(f"/incidents/number/{incident_number}/actions")
        return actions

    @staticmethod
    def add_filter_to_query(query: str | None, filter_name: str, filter_arg: str, use_new_query: bool = True) -> str | None:
        """Enhance query to include filter argument. Consider the supported query type.

        Args:
            query: The current query in use. (e.g. id==some-id)
            filter_name: The filter name to add (e.g. email)
            filter_arg: The filter argument to add (e.g. my@email.com)
            use_new_query: Whether to use FIQL query or not.

        Return the joined query with the argument (e.g. id==some-id&email==my@email.com)
        """
        if filter_name and filter_arg:
            if query:
                query = f"{query}&"
            else:
                query = ""

            if use_new_query:
                query = f"{query}{filter_name}=={filter_arg}"
            else:
                query = f"{query}{filter_name}={filter_arg}"

        return query

    @staticmethod
    def add_query_to_request(query: str | None, url_suffix: str, new_query: bool, inline_parameters: bool) -> str:
        """Add the inline query parameter to the url suffix of a request.
        Consider the supported query type.

        Args:
             query: The query argument to add to the url suffix (e.g. id==3)
             url_suffix: The existing url suffix (e.g. /persons?start=2)
             new_query: Whether to use FIQL query or add parameters inline.
             inline_parameters: Whether there are already other inline parameters in the url.

        Return the reconstructed url_suffix containing the query.
        """
        if query:
            if new_query:
                query = f"query={query}"

            if inline_parameters:
                url_suffix = f"{url_suffix}&{query}"

            else:
                url_suffix = f"{url_suffix}?{query}"

        return url_suffix

    @staticmethod
    def convert_query_types(current_query: str | None, to_new_query: bool) -> str | None:
        """Convert inline params to FIQL query and otherwise

        Args:
            current_query: The current query, must be in the for.
            to_new_query: Wether to convert to FIQL query or inline parameters.

        Return the new reconstructed query.
        """
        if not current_query:
            return None
        query_args = re.split("&", current_query)
        new_query_args = []
        for query_arg in query_args:
            query_arg_list = re.split("=", query_arg)
            if "" in query_arg_list:
                query_arg_list.remove("")

            if len(query_arg_list) > 3:
                raise ValueError("Invalid query, make sure it is in the right format")

            if not to_new_query and len(query_arg_list) != 2:
                raise ValueError(f"Invalid query, older {INTEGRATION_NAME} versions only support filtering with =")

            if to_new_query and len(query_arg_list) == 2 and query_arg_list[0][-1] != "!":
                new_query_args.append("==".join(query_arg_list))

            else:
                new_query_args.append("=".join(query_arg_list))

        return "&".join(new_query_args)


""" HELPER FUNCTIONS """


def trim_results_by_limit(results: list[Any], limit: int | str = 100) -> list[Any]:
    """Trim list of results so only a limited number is returned.

    Args:
        results: The list of results.
        limit: The upper limit of the results to return. If limit is set to -1 all results will be returned.

    Return the trimmed results.
    """
    if int(limit) == -1:
        return results
    return results[: int(limit)]


def attachments_to_command_results(
    client: Client, attachments: list[dict[str, Any]], incident_id: str | None, incident_number: str | None
) -> CommandResults:
    """Transform raw attachments to CommandResults.

    Args:
        client: The client from which to take the base_url for clickable links.
        attachments: The raw attachments list from the API
        incident_id: The incident id of the attachments.
        incident_number: The incident number of the attachments.

    Return CommandResults of attachments.
    """
    headers = ["Id", "FileName", "DownloadUrl", "Size", "Description", "InvisibleForCaller", "EntryDate", "Operator"]
    capitalized_attachments = capitalize_for_outputs(attachments)
    for capitalized_attachment in capitalized_attachments:
        full_url = "/api".join([client._base_url.split("/api")[0], capitalized_attachment["DownloadUrl"].split("/api")[1]])
        capitalized_attachment["DownloadUrl"] = full_url

    incident_identifier = incident_number if incident_number else incident_id
    readable_output = tableToMarkdown(
        f"{INTEGRATION_NAME} attachment of incident {incident_identifier}",
        capitalized_attachments,
        headers=headers,
        removeNull=True,
    )

    return CommandResults(
        readable_output=readable_output,
        outputs_prefix=f"{INTEGRATION_NAME}.Attachment",
        outputs_key_field="Id",
        outputs=capitalized_attachments,
        raw_response=attachments,
    )


def actions_to_command_results(
    client: Client, actions: list[dict[str, Any]], incident_id: str | None, incident_number: str | None
) -> CommandResults:
    """Transform raw actions to CommandResults.

    Args:
        client: The client from which to take the base_url for clickable links.
        actions: The raw actions list from the API
        incident_id: The incident id of the actions.
        incident_number: The incident number of the actions.

    Return CommandResults of actions.
    """
    headers = ["Id", "Memotext", "Flag", "InvisibleForCaller", "EntryDate", "Operator", "Person"]
    capitalized_actions = capitalize_for_outputs(actions)

    incident_identifier = incident_number if incident_number else incident_id
    readable_output = tableToMarkdown(
        f"{INTEGRATION_NAME} action of incident {incident_identifier}", capitalized_actions, headers=headers, removeNull=True
    )

    return CommandResults(
        readable_output=readable_output,
        outputs_prefix=f"{INTEGRATION_NAME}.Action",
        outputs_key_field="Id",
        outputs=capitalized_actions,
        raw_response=actions,
    )


def prepare_touch_request_params(args: dict[str, Any]) -> dict[str, Any]:
    """Prepare request parameters for incident-create and incident-update commands.
    Convert snake_case and specific names of command to halfCamelizedCase and API names.

    Args should contain arguments as specified in the documentation:
      https://developers.topdesk.com/documentation/index.html#api-Incident-CreateIncident

    Return a request body dictionary ready for sending.
    """
    request_params: dict[str, Any] = {}
    if args.get("entry_type", None):
        request_params["entryType"] = {"name": args["entry_type"]}

    optional_params = [
        "caller",
        "status",
        "description",
        "request",
        "action",
        "action_invisible_for_caller",
        "call_type",
        "category",
        "subcategory",
        "external_number",
        "main_incident",
        "priority",
        "urgency",
        "impact",
        "processingStatus",
    ]
    optional_named_params = ["call_type", "category", "subcategory", "priority", "urgency", "impact", "processingStatus"]
    if args:
        for optional_param in optional_params:
            if args.get(optional_param, None):
                if optional_param == "description":
                    request_params["briefDescription"] = args.get(optional_param, None)

                elif optional_param == "caller":
                    if args.get("registered_caller", False):
                        request_params["callerLookup"] = {"id": args[optional_param]}
                    else:
                        request_params["caller"] = {"dynamicName": args[optional_param]}

                elif optional_param in optional_named_params:
                    request_params[half_camelize(optional_param)] = {"name": args[optional_param]}

                else:
                    request_params[half_camelize(optional_param)] = args.get(optional_param, None)

    if args.get("additional_params", None):
        request_params.update(json.loads(args["additional_params"]))

    return request_params


def half_camelize(s: str, delimiter: str = "_") -> str:
    """Convert an underscore separated string to camel case with first word not capitalized.
        hello_world -> helloWorld
    Args:
        s: The string to convert
        delimiter: The delimiter of the snake_case (e.g. snake-case => delimiter == '-')

    Return the converted halfCamelized string.
    """
    components = s.split(delimiter)
    return f"{components[0]}{''.join(x.title() for x in components[1:])}"


def capitalize(word: str):
    """Capitalize the first letter of the word while keeping the rest as it is."""
    return word[:1].upper() + word[1:]


def capitalize_for_outputs(outputs: list[dict[str, Any]]) -> list[dict[str, Any]]:
    """Capitalize for XSOAR readable outputs.

    Args:
        outputs: XSOAR raw_outputs object.

    Return same object with capitalized field names.
    """
    capitalized_outputs: list[dict[str, Any]] = []
    for output in outputs:
        capitalized_output: dict[str, Any] = {}
        for field, value in output.items():
            if isinstance(value, str | bool):
                capitalized_output[capitalize(field)] = value
            elif isinstance(value, dict):
                capitalized_output[capitalize(field)] = {}
                for sub_field, sub_value in value.items():
                    if isinstance(sub_value, str) or isinstance(value, bool):
                        capitalized_output[capitalize(field)][capitalize(sub_field)] = sub_value
                    elif isinstance(sub_value, dict):
                        capitalized_output[capitalize(field)][capitalize(sub_field)] = {}
                        for sub_sub_field, sub_sub_value in sub_value.items():
                            capitalized_output[capitalize(field)][capitalize(sub_field)][capitalize(sub_sub_field)] = (
                                sub_sub_value  # Support up to dict[x: dict[y: dict]]
                            )
        capitalized_outputs.append(capitalized_output)

    return capitalized_outputs


def command_with_all_fields_readable_list(
    results: list[dict[str, Any]], result_name: str, output_prefix: str, outputs_key_field: str = "id"
) -> CommandResults:
    """Return CommandResults with all the fields.

    Args:
        results: The command results extracted from the API response.
        result_name: Result table name. (e.g. Archiving Reasons)
        output_prefix: The output_prefix used in context data (e.g. ArchiveReason)
        outputs_key_field: Key field for the CommandResults (e.g. id)

    Return CommandResults with all fields in results and readable_output.
    """

    if len(results) == 0:
        return CommandResults(readable_output=f"No {result_name} found")

    readable_output = tableToMarkdown(f"{INTEGRATION_NAME} {result_name}", capitalize_for_outputs(results), removeNull=True)

    return CommandResults(
        readable_output=readable_output,
        outputs_prefix=f"{INTEGRATION_NAME}.{output_prefix}",
        outputs_key_field=outputs_key_field,
        outputs=capitalize_for_outputs(results),
        raw_response=results,
    )


def get_incidents_with_pagination(
    client: Client,
    max_fetch: int,
    query: str,
    modification_date_start: str | None = None,
    modification_date_end: str | None = None,
    creation_date_start: str | None = None,
    creation_date_end: str | None = None,
    fields: str | None = None,
) -> list[dict[str, Any]]:
    """Implement pagination for fetching incidents.

    Args:
        client: The client from which to make the requests.
        max_fetch: Maximum number of incidents to fetch.
        query: A filter query for the incidents to fetch.
        modification_date_start: The start modification date from which to fetch.
        modification_date_end: The end modification date from which to fetch.
        creation_date_start: The start creation date from which to fetch.
        creation_date_end: The end creation date from which to fetch.
        fields: Option to select fields for persons, branches and incidents.


    Return all incidents fetched.
    """
    incidents = []
    max_incidents = int(max_fetch)
    number_of_requests = math.ceil(max_incidents / MAX_API_PAGE_SIZE)
    if max_incidents < MAX_API_PAGE_SIZE:
        page_size = max_incidents
    else:
        page_size = MAX_API_PAGE_SIZE

    start = 0
    for _index in range(number_of_requests):
        incidents += client.get_list_with_query(
            list_type="incidents",
            start=start,
            page_size=page_size,
            query=query,
            modification_date_start=modification_date_start,
            modification_date_end=modification_date_end,
            creation_date_start=creation_date_start,
            creation_date_end=creation_date_end,
            fields=fields,
        )
        start += page_size
    return incidents


def get_incidents_list(
    client: Client, modification_date_start: str = None, modification_date_end: str = None, args: dict[str, Any] = {}
) -> list[dict[str, Any]]:
    """Get list of incidents from TOPdesk.

    Args:
        client: The client from which to make the requests.
        modification_date_start: The start date from which to fetch.
        modification_date_end: The end date from which to fetch.
        args: might contain new style query or other old style arguments.

    Return list of incidents got from the API.
    """
    if args.get("incident_id", None):
        incidents = [client.get_single_endpoint(f"/incidents/id/{args.get('incident_id')}")]
    elif args.get("incident_number", None):
        incidents = [client.get_single_endpoint(f"/incidents/number/{args.get('incident_number')}")]
    else:
        allowed_statuses = [None, "firstLine", "secondLine", "partial"]
        if args.get("status", None) not in allowed_statuses:
            raise (ValueError(f"status {args.get('status', None)} id not in the allowed statuses list: {allowed_statuses}"))
        else:
            filter_arguments: dict[str, Any] = {
                "status": "status",
                "caller_id": "caller",
                "branch_id": "branch",
                "category": "category",
                "subcategory": "subcategory",
                "call_type": "callType",
                "entry_type": "entryType",
            }
            old_query_not_allowed_filters = ["category", "subcategory", "call_type", "entry_type"]

            query = args.get("query", None)
            for filter_arg in filter_arguments:
                if not client.rest_api_new_query and (args.get(filter_arg, None) and filter_arg in old_query_not_allowed_filters):
                    raise KeyError(f"Filtering via {filter_arg} is not supported in older TOPdeskRestApi versions.")

                query = client.add_filter_to_query(
                    query=query,
                    filter_name=filter_arguments.get(filter_arg, None),
                    filter_arg=args.get(filter_arg, None),
                    use_new_query=client.rest_api_new_query,
                )
            incidents = client.get_list_with_query(
                list_type="incidents",
                start=args.get("start", None),
                page_size=args.get("page_size", None),
                query=query,
                modification_date_start=modification_date_start,
                modification_date_end=modification_date_end,
                fields=args.get("fields", None),
            )

    return incidents


def get_assets_list(
    client: Client,
    args: dict[str, Any] = {},
) -> list[dict[str, Any]]:
    """Get list of Assets from TOPdesk.

    Args:
        client: The client from which to make the requests.
        args: might contain new style query or other old style arguments.

    Return list of incidents got from the API.
    """

    page_size = arg_to_number(args.get("page_size", 50)) or 50
    start = arg_to_number(args.get("start", 0)) or 0
    query = args.get("filter", None)
    search_term = args.get("search_term", None)
    archived = args.get("archived", None)
    fields = args.get("fields", None)
    # If the page size is 0, we will fetch all data
    if page_size == 0:
        pagination = True
        page_size = 1000
    else:
        pagination = False
    assets_list = []
    while True:
        assets = client.get_asset_list_with_query(
            list_type="assets",
            start=start,
            page_size=page_size,
            query=query,
            search_term=search_term,
            archived=archived,
            fields=fields,
        )
        assets_list.extend(assets["dataSet"])
        start += page_size
        if not pagination or len(assets["dataSet"]) < 1:
            break

    return assets_list


def incidents_to_command_results(client: Client, incidents: list[dict[str, Any]]) -> CommandResults:
    """Receive incidents from api and convert to CommandResults.

    Args:
        client: The client from which to take the base_url for clickable links.
        incidents: The raw incidents list from the API

    Return CommandResults of Incidents.
    """
    if len(incidents) == 0:
        return CommandResults(readable_output="No incidents found")

    headers = ["Id", "Number", "Request", "Line", "Actions", "CallerName", "Status", "Operator", "Priority", "LinkToTOPdesk"]

    readable_incidents = []
    for incident in incidents:
        readable_incident = {
            "Id": incident.get("id", None),
            "Number": incident.get("number", None),
            "Request": incident.get("request", None),
            "Line": incident.get("status", None),
            "CallerName": incident.get("caller", {}).get("dynamicName", None) if incident.get("caller") else None,
            "Status": incident.get("processingStatus", {}).get("name", None) if incident.get("processingStatus") else None,
            "Operator": incident.get("operator", {}).get("name", None) if incident.get("operator") else None,
            "Priority": incident.get("priority", None),
            "LinkToTOPdesk": f"[Open Incident in TOPdesk]({client._base_url.split('/api')[0]}"
            f"/public/ssp/content/detail/incident?unid={incident.get('id', None)})",
        }
        readable_incidents.append(readable_incident)

    readable_output = tableToMarkdown(f"{INTEGRATION_NAME} incidents", readable_incidents, headers=headers, removeNull=True)

    return CommandResults(
        readable_output=readable_output,
        outputs_prefix=f"{INTEGRATION_NAME}.Incident",
        outputs_key_field="Id",
        outputs=capitalize_for_outputs(incidents),
        raw_response=incidents,
    )


def assets_to_command_results(assets: list[dict[str, Any]]) -> CommandResults:
    """Receive assets from api and convert to CommandResults.

    Args:
        assets: The raw assets list from the API

    Return CommandResults of Assets.
    """
    if len(assets) == 0:
        return CommandResults(readable_output="No assets found")
    # Remove '@' prefix from keys in each asset
    assets = [{k.replace("@", ""): v for k, v in asset.items()} for asset in assets]
    readable_output = tableToMarkdown(f"{INTEGRATION_NAME} assets", capitalize_for_outputs(assets), removeNull=True)
    return CommandResults(
        readable_output=readable_output,
        outputs_prefix=f"{INTEGRATION_NAME}.Asset",
        outputs_key_field="",
        outputs=capitalize_for_outputs(assets),
        raw_response=assets,
    )


def incident_func_command(client: Client, args: dict[str, Any], client_func: Callable, action: str) -> CommandResults:
    """Abstract class for executing client_func and returning TOPdesk incident as a result.

    Args:
        client: The client from which to take the base_url for clickable links.
        args: the arguments to send to the client_func.
        client_func: The client function to be called to execute the command.
        action: Readable string of the command to indicate the errors better.

    Return CommandResults of list of single incident response.
    """
    response = client_func(args)

    if not response.get("id", None):
        raise Exception(f"Recieved Error when {action} incident in TOPdesk:\n{response}")

    return incidents_to_command_results(client, [response])


""" COMMAND FUNCTIONS """
""" List Commands """


def list_persons_command(client: Client, args: dict[str, Any]) -> CommandResults:
    """Get persons list from TOPdesk.

    Args:
        client: The client to preform command on.
        args: The arguments of the persons command.

    Return CommadResults of list of persons.
    """

    persons = client.get_list_with_query(
        list_type="persons",
        start=args.get("start", None),
        page_size=args.get("page_size", None),
        query=args.get("query", None),
        fields=args.get("fields", None),
    )
    if len(persons) == 0:
        return CommandResults(readable_output="No persons found")

    headers = ["Id", "Name", "Telephone", "JobTitle", "Department", "City", "BranchName", "Room"]

    readable_persons = []
    for person in persons:
        readable_person = {
            "Id": person.get("id", None),
            "Name": person.get("dynamicName", None),
            "Telephone": person.get("phoneNumber", None),
            "JobTitle": person.get("jobTitle", None),
            "Department": person.get("department", None),
            "City": person.get("city", None),
            "BranchName": person.get("branch", {}).get("name", None) if person.get("branch") else None,
            "Room": person.get("location", {}).get("room", None) if person.get("location") else None,
        }

        readable_persons.append(readable_person)

    readable_output = tableToMarkdown(f"{INTEGRATION_NAME} persons", readable_persons, headers=headers, removeNull=True)

    return CommandResults(
        readable_output=readable_output,
        outputs_prefix=f"{INTEGRATION_NAME}.Person",
        outputs_key_field="Id",
        outputs=capitalize_for_outputs(persons),
        raw_response=persons,
    )


def list_operators_command(client: Client, args: dict[str, Any]) -> CommandResults:
    """Get operators list from TOPdesk.

    Args:
        client: The client to preform command on.
        args: The arguments of the operators command.

    Return CommandResults of list of operators.
    """

    operators = client.get_list_with_query(
        list_type="operators", start=args.get("start", None), page_size=args.get("page_size", None), query=args.get("query", None)
    )
    if len(operators) == 0:
        return CommandResults(readable_output="No operators found")

    headers = ["Id", "Name", "Telephone", "JobTitle", "Department", "City", "BranchName", "LoginName"]

    readable_operators = []
    for operator in operators:
        readable_operators.append(
            {
                "Id": operator.get("id", None),
                "Name": operator.get("dynamicName", None),
                "Telephone": operator.get("phoneNumber", None),
                "JobTitle": operator.get("jobTitle", None),
                "Department": operator.get("department", None),
                "City": operator.get("city", None),
                "BranchName": operator.get("branch", {}).get("name", None) if operator.get("branch") else None,
                "LoginName": operator.get("tasLoginName", None),
            }
        )

    readable_output = tableToMarkdown(f"{INTEGRATION_NAME} operators", readable_operators, headers=headers, removeNull=True)

    return CommandResults(
        readable_output=readable_output,
        outputs_prefix=f"{INTEGRATION_NAME}.Operator",
        outputs_key_field="Id",
        outputs=capitalize_for_outputs(operators),
        raw_response=operators,
    )


def entry_types_command(client: Client, args: dict[str, Any]) -> CommandResults:
    """Get entry types list from TOPdesk.

    Args:
        client: The client to preform command on.
        args: The arguments of the command, specifically 'limit' will be used.

    Return CommadResults of list of EntryType."""
    entry_types = client.get_list("/incidents/entry_types")
    entry_types = trim_results_by_limit(entry_types, args.get("limit", 100))

    return command_with_all_fields_readable_list(
        results=entry_types, result_name="entry types", output_prefix="EntryType", outputs_key_field="Id"
    )


def call_types_command(client: Client, args: dict[str, Any]) -> CommandResults:
    """Get call types list from TOPdesk.

    Args:
        client: The client to preform command on.
        args: The arguments of the command, specifically 'limit' will be used.

    Return CommadResults of list of CallType."""

    call_types = client.get_list("/incidents/call_types")
    call_types = trim_results_by_limit(call_types, args.get("limit", 100))

    return command_with_all_fields_readable_list(
        results=call_types, result_name="call types", output_prefix="CallType", outputs_key_field="Id"
    )


def categories_command(client: Client, args: dict[str, Any]) -> CommandResults:
    """Get categories list from TOPdesk

    Args:
        client: The client to preform command on.
        args: The arguments of the command, specifically 'limit' will be used.

    Return CommadResults of list of Category."""

    categories = client.get_list("/incidents/categories")
    categories = trim_results_by_limit(categories, args.get("limit", 100))

    return command_with_all_fields_readable_list(
        results=categories, result_name="categories", output_prefix="Category", outputs_key_field="Id"
    )


def escalation_reasons_command(client: Client, args: dict[str, Any]) -> CommandResults:
    """Get escalation reasons list from TOPdesk.

    Args:
        client: The client to preform command on.
        args: The arguments of the command, specifically 'limit' will be used.

    Return CommadResults of list of EscalationReason."""
    escalation_reasons = client.get_list("/incidents/escalation-reasons")
    escalation_reasons = trim_results_by_limit(escalation_reasons, args.get("limit", 100))

    return command_with_all_fields_readable_list(
        results=escalation_reasons, result_name="escalation reasons", output_prefix="EscalationReason", outputs_key_field="Id"
    )


def deescalation_reasons_command(client: Client, args: dict[str, Any]) -> CommandResults | str:
    """Get deescalation reasons list from TOPdesk.

    Args:
        client: The client to preform command on.
        args: The arguments of the command, specifically 'limit' will be used.

    Return CommadResults of list of DeescalationReason."""
    try:
        deescalation_reasons = client.get_list("/incidents/deescalation-reasons")
        deescalation_reasons = trim_results_by_limit(deescalation_reasons, args.get("limit", 100))

    except DemistoException as e:
        if "[404] - Not Found" in str(e):
            return "Page Not Found: make sure deescalation feature is enabled in TOPdesk."

    return command_with_all_fields_readable_list(
        results=deescalation_reasons,
        result_name="deescalation reasons",
        output_prefix="DeescalationReason",
        outputs_key_field="Id",
    )


def archiving_reasons_command(client: Client, args: dict[str, Any]) -> CommandResults:
    """Get archiving reasons list from TOPdesk.

    Args:
        client: The client to preform command on.
        args: The arguments of the command, specifically 'limit' will be used.

    Return CommadResults of list of ArchiveReason."""

    archiving_reasons = client.get_list("/archiving-reasons")
    archiving_reasons = trim_results_by_limit(archiving_reasons, args.get("limit", 100))

    return command_with_all_fields_readable_list(
        results=archiving_reasons, result_name="archiving reasons", output_prefix="ArchiveReason", outputs_key_field="Id"
    )


def subcategories_command(client: Client, args: dict[str, Any]) -> CommandResults:
    """Get subcategories list from TOPdesk.

    Args:
        client: The client to preform command on.
        args: The arguments of the command, specifically 'limit' will be used.

    Return CommadResults of list of subcategories."""

    subcategories = client.get_list("/incidents/subcategories")

    if len(subcategories) == 0:
        return CommandResults(readable_output="No subcategories found")

    subcategories = trim_results_by_limit(subcategories, args.get("limit", 100))

    subcategories_with_categories = []
    for subcategory in subcategories:
        subcategory_with_category = {
            "Id": subcategory.get("id", None),
            "Name": subcategory.get("name", None),
            "CategoryId": None,
            "CategoryName": None,
        }
        if subcategory.get("category", None):
            subcategory_with_category["CategoryId"] = subcategory.get("category", None).get("id", None)
            subcategory_with_category["CategoryName"] = subcategory.get("category", None).get("name", None)

        subcategories_with_categories.append(subcategory_with_category)

    headers = ["Id", "Name", "CategoryId", "CategoryName"]
    readable_output = tableToMarkdown(
        f"{INTEGRATION_NAME} subcategories", subcategories_with_categories, headers=headers, removeNull=True
    )

    return CommandResults(
        readable_output=readable_output,
        outputs_prefix=f"{INTEGRATION_NAME}.Subcategory",
        outputs_key_field="Id",
        outputs=capitalize_for_outputs(subcategories),
        raw_response=subcategories,
    )


def list_attachments_command(client: Client, args: dict[str, Any]) -> CommandResults:
    """Get attachments list from TOPdesk incident.

    Args:
        client: The client to preform command on.
        args: The arguments of the command, specifically 'limit' will be used.

    Return CommadResults of list of attachments."""
    attachments = client.list_attachments(
        incident_id=args.get("incident_id", None), incident_number=args.get("incident_number", None)
    )

    if len(attachments) == 0:
        return CommandResults(readable_output="No attachments found")

    attachments = trim_results_by_limit(attachments, args.get("limit", 100))
    return attachments_to_command_results(client, attachments, args.get("incident_id", None), args.get("incident_number", None))


def list_actions_command(client: Client, args: dict[str, Any]) -> CommandResults:
    """Get actions list from TOPdesk incident.

    Args:
        client: The client to preform command on.
        args: The arguments of the command, specifically 'limit' will be used.

    Return CommadResults of list of attachments."""
    actions = client.list_actions(incident_id=args.get("incident_id", None), incident_number=args.get("incident_number", None))

    if len(actions) == 0:
        return CommandResults(readable_output="No actions found")

    actions = trim_results_by_limit(actions, args.get("limit", 100))
    return actions_to_command_results(client, actions, args.get("incident_id", None), args.get("incident_number", None))


def branches_command(client: Client, args: dict[str, Any]) -> CommandResults:
    """Get branches list from TOPdesk.

    Args:
        client: The client to preform command on.
        args: The arguments of the branches command.

    Return CommadResults of list of branches.
    """

    branches = client.get_list_with_query(
        list_type="branches",
        start=args.get("start", None),
        page_size=args.get("page_size", None),
        query=args.get("query", None),
        fields=args.get("fields", None),
    )
    if len(branches) == 0:
        return CommandResults(readable_output="No branches found")

    headers = ["Id", "Status", "Name", "Phone", "Website", "Address"]

    readable_branches = []
    for branch in branches:
        readable_branch = {
            "Id": branch.get("id", None),
            "Status": branch.get("status", None),
            "Name": branch.get("name", None),
            "Phone": branch.get("phone", None),
            "Website": branch.get("website", None),
            "Address": branch.get("address", {}).get("addressMemo", None),
        }
        readable_branches.append(readable_branch)

    readable_output = tableToMarkdown(f"{INTEGRATION_NAME} branches", readable_branches, headers=headers, removeNull=True)

    return CommandResults(
        readable_output=readable_output,
        outputs_prefix=f"{INTEGRATION_NAME}.Branch",
        outputs_key_field="Id",
        outputs=capitalize_for_outputs(branches),
        raw_response=branches,
    )


def get_incidents_list_command(client: Client, args: dict[str, Any]) -> CommandResults | str:
    """Parse arguments and return incidents list as CommandResults.

    Args:
        client: The client to preform command on.
        args: The arguments of the incidents_list command.

    Return CommadResults of list of incidents.
    """

    try:
        command_results = incidents_to_command_results(client, get_incidents_list(client=client, args=args))
        return command_results
    except Exception as e:
        if "Error parsing query" in str(e):
            return "Error parsing query: make sure you are using the right query type."
        else:
            raise e


def get_assets_list_command(client: Client, args: dict[str, Any]) -> CommandResults | str:
    """Parse arguments and return asset list as CommandResults.

    Args:
        client: The client to preform command on.
        args: The arguments of the asset_list command.

    Return CommandResults of list of assets.
    """

    try:
        command_results = assets_to_command_results(get_assets_list(client=client, args=args))
        return command_results
    except Exception as e:
        if "Error parsing query" in str(e):
            return "Error parsing query: make sure you are using the right query type."
        else:
            raise e


def update_asset_command(client: Client, args: dict[str, Any]) -> CommandResults | str:
    """Parse arguments and Update Asset.

    Args:
        client: The client to preform command on.
        args: The arguments of the asset_list command.

    Return CommandResults of list of assets.
    """

    try:
        response = client.update_asset(args)
        return CommandResults(
            outputs_prefix=f"{INTEGRATION_NAME}.Asset",
            outputs=response,
            readable_output="Sucessfully Updated Asset",
        )
    except Exception as e:
        if "Error parsing query" in str(e):
            return "Error parsing query: make sure you are using the right query type."
        else:
            raise e


def incident_touch_command(client: Client, args: dict[str, Any], client_func: Callable, action: str) -> CommandResults:
    """This function implements incident_create and incident_update commands.

    Try setting caller as a reqistered caller. If caller is not registered, set the caller argument as caller name.
    A registered caller is one that has a TOPdesk account that can be linked to the call.

    Args:
        client: The client from which to take the base_url for clickable links.
        args: The arguments of the command.
        client_func: The client function to be called.
        action: Readable string for better errors (e.g. 'update')

    Return CommandResults with the renewed/new incident.
    """

    try:
        args["registered_caller"] = True  # Try to link a caller id to the incident.
        return incident_func_command(client=client, args=args, client_func=client_func, action=action)
    except Exception as e:
        if "'callerLookup.id' cannot be parsed" in str(e):  # If couldn't find a caller with the provided id.
            args["registered_caller"] = False  # Create incident with an unregistered caller name.
            return incident_func_command(client=client, args=args, client_func=client_func, action=action)
        else:
            raise e


def incident_do_command(client: Client, args: dict[str, Any], action: str) -> CommandResults:
    """Preform an action on an incident and return it as CommandResults.

    Args:
        client: The client to preform command on.
        args: The arguments of the incidents_list command.
        action: The action to preform on the incident: "escalate"/"deescalate"/"archive"/"unarchive"

    Return the incident as CommandResult.
    """

    return incidents_to_command_results(
        client,
        [
            client.incident_do(
                action=action,
                incident_id=args.get("id", None),
                incident_number=args.get("number", None),
                reason_id=args.get(f"{action}_reason_id", None),
            )
        ],
    )


def attachment_upload_command(client: Client, args: dict[str, Any]) -> CommandResults:
    """Upload attachment to certain incident in TOPdesk.

    Args:
        client: The client to preform command on.
        args: The arguments of the attachment upload command. Should contain either id or number
            indicating the incident and a file entry id indicating the attachment to upload.

    Return the uploaded attachment as CommandResults.
    """

    file_entry = args.get("file")
    file_name = demisto.dt(demisto.context(), f"File(val.EntryID=='{file_entry}').Name")
    if not file_name:  # in case of info file
        file_name = demisto.dt(demisto.context(), f"InfoFile(val.EntryID=='{file_entry}').Name")

    if not file_name:
        raise ValueError(f"Could not fine file in entry with entry_id: {file_entry}")

    if isinstance(file_name, list):  # If few files
        if args.get("file_name", None) and args.get("file_name") in file_name:
            file_name = args.get("file_name")
        else:
            file_name = file_name[0]

    invisible_for_caller = bool(args.get("invisible_for_caller", False))

    response = client.attachment_upload(
        incident_id=args.get("id", None),
        incident_number=args.get("number", None),
        file_entry=str(file_entry),
        file_name=str(file_name),
        invisible_for_caller=invisible_for_caller,
        file_description=args.get("file_description", None),
    )

    if not response.get("downloadUrl", None):
        raise Exception(f"Failed uploading file: {response}")

    return attachments_to_command_results(client, [response], args.get("incident_id", None), args.get("incident_number", None))


""" FETCH & MIRRORING COMMANDS"""


def fetch_incidents(
    client: Client, last_run: dict[str, Any], demisto_params: dict[str, Any]
) -> tuple[dict[str, Any], list[dict[str, Any]]]:
    """Fetches incidents from TOPdesk.

    Args:
        client: The client to preform command on.
        last_run: Dict indicating the last fetch time (e.g. {'last_fetch': 2020-03-10T06:32:36.000000+0000})
        demisto_params: Demisto configuration of fetch_incidents.

    Return (updated dict indicating the last fetch time, incidents)
    """

    first_fetch_datetime = dateparser.parse(demisto_params.get("first_fetch", "3 days"))
    last_fetch = last_run.get("last_fetch", None)

    if not last_fetch:
        if first_fetch_datetime:
            last_fetch_datetime = first_fetch_datetime
        else:
            raise Exception("Could not find last fetch time.")
    else:
        last_fetch_datetime = dateparser.parse(last_fetch)  # type: ignore

    assert last_fetch_datetime is not None
    latest_created_time = last_fetch_datetime
    incidents: list[dict[str, Any]] = []

    creation_date_start = last_fetch_datetime.strftime("<%Y-%m-%d>")

    topdesk_incidents = get_incidents_with_pagination(
        client=client,
        max_fetch=int(demisto_params.get("max_fetch", 10)),
        query=demisto_params.get("fetch_query", None),
        creation_date_start=creation_date_start,
    )

    for topdesk_incident in topdesk_incidents:
        if topdesk_incident.get("creationDate", None):
            creation_datetime = dateparser.parse(topdesk_incident["creationDate"])
            incident_created_time = creation_datetime
        else:
            incident_created_time = last_fetch_datetime
        assert incident_created_time is not None
        topdesk_incident["mirror_direction"] = MIRROR_DIRECTION.get(str(demisto_params.get("mirror_direction")))
        topdesk_incident["mirror_tags"] = [
            demisto_params.get("comment_tag", "comments"),
            demisto_params.get("file_tag", "ForTOPdesk"),
            demisto_params.get("work_notes_tag", "work_notes"),
        ]
        topdesk_incident["mirror_instance"] = demisto.integrationInstance()
        if float(last_fetch_datetime.timestamp()) < float(incident_created_time.timestamp()):
            labels = []
            try:
                actions = client.list_actions(incident_id=topdesk_incident["id"], incident_number=None)
            except DemistoException as error:
                demisto.debug(f"{error=}")
                # make sure we catch only JSONDecodeError errors, in case it is a different exception, should be raised.
                if isinstance(error.exception, json.decoder.JSONDecodeError | requests.exceptions.JSONDecodeError):
                    actions = []
                else:
                    raise error
            for action in actions:
                entry_date = dateparser.parse(action["entryDate"], settings={"TIMEZONE": "UTC"})  # type: ignore
                if action["operator"]:
                    name = action["operator"]["name"]
                elif action["person"]:
                    name = action["person"]["name"]
                else:
                    name = "Unknown"
                if entry_date:
                    date_time = entry_date.strftime(DATE_FORMAT)
                else:
                    date_time = incident_created_time.strftime(DATE_FORMAT)
                labels.append({"type": "comments", "value": f'[{date_time}] {name}:<br><br>{action["memoText"]}'})

            incident = {
                "name": f"{topdesk_incident['briefDescription']}",
                "labels": labels,
                "details": json.dumps(topdesk_incident),
                "occurred": incident_created_time.strftime(DATE_FORMAT),
                "rawJSON": json.dumps(topdesk_incident),
            }

            if incident not in incidents:  # Do not fetch duplicates
                incidents.append(incident)

        if float(latest_created_time.timestamp()) < float(incident_created_time.timestamp()):
            latest_created_time = incident_created_time

    return {"last_fetch": latest_created_time.strftime(DATE_FORMAT_FULL)}, incidents


def get_remote_data_command(client: Client, args: dict[str, Any], params: dict) -> GetRemoteDataResponse:
    """
    get-remote-data command: Returns an updated incident and entries
    Args:
        client: XSOAR client to use
        args:
            id: incident id to retrieve
            lastUpdate: when was the last time we retrieved data

    Returns:
        GetRemoteDataResponse object, which contain the incident or detection data to update.
    """

    ticket_id = args.get("id", "")
    last_update = dateparser.parse(str(args.get("lastUpdate")), settings={"TIMEZONE": "UTC"})  # type: ignore
    assert last_update is not None

    try:
        demisto.debug(
            f"Performing get-remote-data command with incident or detection id: {ticket_id} and last_update: {last_update}"
        )
        _args = {}
        _args["incident_id"] = ticket_id
        result = get_incidents_list(client=client, args=_args)

        if not result:
            demisto.debug("Ticket was not found!")
            mirrored_data = {"id": ticket_id, "in_mirror_error": "Ticket was not found"}
            return GetRemoteDataResponse(mirrored_object=mirrored_data, entries=[])
        else:
            demisto.debug("Ticket was found!")

        ticket = result[0]
        ticket_last_update = dateparser.parse(str(ticket["modificationDate"]), settings={"TIMEZONE": "UTC"})  # type: ignore
        assert ticket_last_update is not None

        if last_update > ticket_last_update:
            demisto.debug("Nothing new in the ticket")
        else:
            demisto.debug("ticket is updated")

        entries = []
        # Get actions
        # - could be optimized if list_actions would apply filter with last_update timestamp
        actions = client.list_actions(incident_id=ticket_id, incident_number=None)

        # Filter actions
        for action in actions:
            if "Mirrored from Cortex XSOAR" not in action["memoText"]:
                entry_date = dateparser.parse(action["entryDate"], settings={"TIMEZONE": "UTC"})  # type: ignore
                assert entry_date is not None
                if last_update > entry_date:
                    demisto.debug("skip entry")
                else:
                    demisto.debug("mirror entry to xsoar")

                    if action["operator"]:
                        name = action["operator"]["name"]
                    elif action["person"]:
                        name = action["person"]["name"]
                    else:
                        name = "Unknown"

                    date_time = entry_date.strftime(DATE_FORMAT)

                    entries.append(
                        {
                            "Type": EntryType.NOTE,
                            "Contents": f'[{date_time}] {name}:\n\n{action["memoText"]}',
                            "ContentsFormat": EntryFormat.TEXT,
                            "Tags": ["mirrored"],  # the list of tags to add to the entry
                            "Note": True,  # boolean, True for Note, False otherwise
                        }
                    )

        if ticket.get("closed") and params.get("close_incident"):
            demisto.debug(f"ticket is closed: {ticket}")
            entries.append(
                {
                    "Type": EntryType.NOTE,
                    "Contents": {"dbotIncidentClose": True, "closeReason": "Closed by TOPdesk"},
                    "ContentsFormat": EntryFormat.JSON,
                }
            )

        demisto.debug(f"Pull result is {ticket}")
        return GetRemoteDataResponse(mirrored_object=ticket, entries=entries)

    except Exception as e:
        demisto.debug(f"Error in TOPdesk incoming mirror for incident or detection: {ticket_id}\nError message: {e!s}")
        if not ticket:
            ticket = {"incident_id": ticket_id}
        ticket["in_mirror_error"] = str(e)

        return GetRemoteDataResponse(mirrored_object=ticket, entries=[])


def get_modified_remote_data_command(client: Client, args: dict[str, Any], params: dict) -> GetModifiedRemoteDataResponse:
    remote_args = GetModifiedRemoteDataArgs(args)
    query_date = dateparser.parse(remote_args.last_update, settings={"TIMEZONE": "UTC"}).strftime(DATE_FORMAT)  # type: ignore
    assert query_date is not None

    demisto.debug(f"Running get-modified-remote-data command. Last update is: {query_date}")

    topdesk_incidents = get_incidents_with_pagination(
        client=client, max_fetch=int(params.get("max_fetch", 20)), query=f"modificationDate=gt={query_date}"
    )

    modified_records_ids = []

    if topdesk_incidents:
        modified_records_ids = [topdesk_incident["id"] for topdesk_incident in topdesk_incidents if "id" in topdesk_incident]

    return GetModifiedRemoteDataResponse(modified_records_ids)


def update_remote_system_command(client: Client, args: dict[str, Any], params: dict[str, Any]) -> str:
    """
    This command pushes local changes to the remote system.
    Args:
        client:  XSOAR Client to use.
        args:
            args['data']: the data to send to the remote system
            args['entries']: the entries to send to the remote system
            args['incident_changed']: boolean telling us if the local incident indeed changed or not
            args['remote_incident_id']: the remote incident id
        params:
            entry_tags: the tags to pass to the entries (to separate between comments and work_notes)

    Returns: The remote incident id - ticket_id

    """

    parsed_args = UpdateRemoteSystemArgs(args)
    if parsed_args.delta:
        demisto.debug(f"Got the following delta keys {list(parsed_args.delta.keys())!s}")

    try:
        # ticket_type = client.ticket_type
        ticket_id = parsed_args.remote_incident_id
        if parsed_args.incident_changed:
            demisto.debug(f"Incident changed: {parsed_args.incident_changed}")
            # Close ticket if needed
            update_args = {"id": ticket_id}
            for key in parsed_args.delta:
                if key in TOPDESK_ARGS:
                    update_args[key] = parsed_args.delta[key]
            if parsed_args.inc_status == IncidentStatus.DONE and params.get("close_ticket"):
                # Set status TOPdesk ticket to Closed
                demisto.debug("Close TOPdesk ticket")
                update_args["processingStatus"] = "Closed"

            client.update_incident(update_args)

        entries = parsed_args.entries
        if entries:
            demisto.debug(f"New entries {entries}")

            for entry in entries:
                demisto.debug(f'Sending entry {entry.get("id")}, type: {entry.get("type")}')
                # Mirroring files as entries
                if entry.get("type") == EntryType.FILE:
                    path_res = demisto.getFilePath(entry.get("id"))
                    full_file_name = path_res.get("name")
                    file_name, file_extension = os.path.splitext(full_file_name)
                    if not file_extension:
                        file_extension = ""
                    client.attachment_upload(
                        incident_id=ticket_id,
                        incident_number=None,
                        file_entry=entry.get("id"),
                        file_name=file_name + "_mirrored_from_xsoar" + file_extension,
                        invisible_for_caller=False,
                        file_description=f"Upload from xsoar: {file_name}.{file_extension}",
                    )
                else:
                    # Mirroring comment and work notes as entries
                    xargs = {
                        "id": ticket_id,
                        "action": "",
                        "action_invisible_for_caller": False,
                    }
                    tags = entry.get("tags", [])
                    if params.get("work_notes_tag") in tags:
                        xargs["action_invisible_for_caller"] = True
                    # Sometimes user is an empty str, not None, therefore nothing is displayed
                    user = entry.get("user", "dbot")
                    if user:
                        duser = demisto.findUser(username=user)
                        name = duser["name"]
                    else:
                        name = "Xsoar dbot"

                    text = (
                        f"<i><u>Update from {name}:</u></i><br><br>{entry.get('contents', '')!s}"
                        + "<br><br><i>Mirrored from Cortex XSOAR</i>"
                    )

                    xargs["action"] = text
                    client.update_incident(xargs)

    except Exception as e:
        demisto.error(f"Error in TOPdesk outgoing mirror for incident or detection {ticket_id}. Error message: {e!s}")
    return ticket_id


def get_mapping_fields_command(client: Client) -> GetMappingFieldsResponse:
    """
    Returns the list of fields for an incident type.
    Args:
        client: Xsoar client to use

    returns: Dictionairy with keys as field names

    """

    incident_type_scheme = SchemeTypeMapping(type_name="TOPdesk Incident")
    demisto.debug('Collecting incident mapping for incident type - "TOPdesk Incident"')

    for field in TOPDESK_ARGS:
        incident_type_scheme.add_field(field)

    mapping_response = GetMappingFieldsResponse()
    mapping_response.add_scheme_type(incident_type_scheme)

    return mapping_response


def test_module(client: Client, demisto_last_run: dict[str, Any], demisto_params: dict[str, Any]) -> str:
    """Test API connectivity and authentication.
    Use fetch incidents for testing if the integration supports it.

    Args:
        client: The client to try to connect to.
        demisto_last_run: Last run of fetch_incidents.
        demisto_params: Demisto configuration, will be used in case of fetching incidents.

    Returns 'ok' on success and an error message otherwise.
    """

    try:
        if demisto_params.get("isFetch"):
            fetch_incidents(client=client, last_run=demisto_last_run, demisto_params=demisto_params)
        else:
            client.get_list("/incidents/call_types")
    except DemistoException as e:
        if "Error 401" in str(e):
            return "Authorization Error: make sure username and password are correctly set"
        if "[404] - Not Found" in str(e):
            return "Page Not Found: make sure the url is correctly set"
        else:
            raise e
    return "ok"


""" MAIN FUNCTION """


def main() -> None:
    """Main function, parses params and runs command functions."""

    # get the service API url
    demisto_params = demisto.params()
    base_url = urljoin(demisto_params.get("url"), "/api")
    verify_certificate = not demisto_params.get("insecure", False)
    credentials = demisto_params.get("credentials")

    demisto.debug(f"Command being called is {demisto.command()}")

    try:
        client = Client(
            base_url=base_url, verify=verify_certificate, auth=(credentials.get("identifier"), credentials.get("password"))
        )

        if demisto.command() == "test-module":
            result = test_module(client, demisto.getLastRun(), demisto_params)
            return_results(result)

        elif demisto.command() == "topdesk-persons-list":
            return_results(list_persons_command(client, demisto.args()))
        elif demisto.command() == "topdesk-operators-list":
            return_results(list_operators_command(client, demisto.args()))
        elif demisto.command() == "topdesk-entry-types-list":
            return_results(entry_types_command(client, demisto.args()))
        elif demisto.command() == "topdesk-call-types-list":
            return_results(call_types_command(client, demisto.args()))
        elif demisto.command() == "topdesk-categories-list":
            return_results(categories_command(client, demisto.args()))
        elif demisto.command() == "topdesk-escalation-reasons-list":
            return_results(escalation_reasons_command(client, demisto.args()))
        elif demisto.command() == "topdesk-deescalation-reasons-list":
            return_results(deescalation_reasons_command(client, demisto.args()))
        elif demisto.command() == "topdesk-archiving-reasons-list":
            return_results(archiving_reasons_command(client, demisto.args()))
        elif demisto.command() == "topdesk-subcategories-list":
            return_results(subcategories_command(client, demisto.args()))
        elif demisto.command() == "topdesk-branches-list":
            return_results(branches_command(client, demisto.args()))
        elif demisto.command() == "topdesk-incidents-list":
            return_results(get_incidents_list_command(client, demisto.args()))
        elif demisto.command() == "topdesk-assets-list":
            return_results(get_assets_list_command(client, demisto.args()))
        elif demisto.command() == "topdesk-asset-update":
            return_results(update_asset_command(client, demisto.args()))
        elif demisto.command() == "topdesk-incident-attachments-list":
            return_results(list_attachments_command(client, demisto.args()))

        elif demisto.command() == "topdesk-incident-create":
            return_results(
                incident_touch_command(client=client, args=demisto.args(), client_func=client.create_incident, action="creating")
            )
        elif demisto.command() == "topdesk-incident-update":
            return_results(
                incident_touch_command(client=client, args=demisto.args(), client_func=client.update_incident, action="updating")
            )

        elif demisto.command() == "topdesk-incident-escalate":
            return_results(incident_do_command(client, demisto.args(), "escalate"))
        elif demisto.command() == "topdesk-incident-deescalate":
            return_results(incident_do_command(client, demisto.args(), "deescalate"))
        elif demisto.command() == "topdesk-incident-archive":
            return_results(incident_do_command(client, demisto.args(), "archive"))
        elif demisto.command() == "topdesk-incident-unarchive":
            return_results(incident_do_command(client, demisto.args(), "unarchive"))

        elif demisto.command() == "topdesk-incident-attachment-upload":
            return_results(attachment_upload_command(client, demisto.args()))

        elif demisto.command() == "topdesk-incident-actions-list":
            return_results(list_actions_command(client, demisto.args()))

        elif demisto.command() == "fetch-incidents":
            last_fetch, incidents = fetch_incidents(client=client, last_run=demisto.getLastRun(), demisto_params=demisto_params)
            demisto.setLastRun(last_fetch)
            demisto.incidents(incidents)
        elif demisto.command() == "get-remote-data":
            return_results(get_remote_data_command(client, demisto.args(), demisto_params))
        elif demisto.command() == "update-remote-system":
            return_results(update_remote_system_command(client, demisto.args(), demisto_params))
        elif demisto.command() == "get-mapping-fields":
            return_results(get_mapping_fields_command(client))
        elif demisto.command() == "get-modified-remote-data":
            return_results(get_modified_remote_data_command(client, demisto.args(), demisto_params))
        else:
            raise NotImplementedError(f"command {demisto.command()} does not exist in {INTEGRATION_NAME} integration")

    # Log exceptions and return errors
    except Exception as e:
        return_error(f"Failed to execute {demisto.command()} command.\nError:\n{e!s}")


""" ENTRY POINT """

if __name__ in ("__main__", "__builtin__", "builtins"):
    main()