Skip to main content

Redmine

This Integration is part of the Redmine Pack.#

Supported versions

Supported Cortex XSOAR versions: 6.10.0 and later.

A project management and issue tracking system that provides a web-based platform for managing projects, tracking tasks, and handling various types of project-related activities. This integration was integrated and tested with version 5.1.2 of Redmine.

Configure Redmine on Cortex XSOAR#

  1. Navigate to Settings > Integrations > Servers & Services.

  2. Search for Redmine.

  3. Click Add instance to create and configure a new integration instance.

    ParameterRequired
    Server URL (e.g., https://1.1.1.1)True
    Trust any certificate (not secure)False
    API KeyTrue
    Project idFalse
  4. Getting your API key:

    • Use your server URL to enter your Redmine instance.
    • Authenticate with your username and password.
    • Navigate to My Account (at the top right corner).
    • Click API Access key > Show - This is your API key
  5. Click Test to validate the URLs, token, and connection.

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.

redmine-issue-create#


  • Create a new issue.
  • The status of the newly created issue will be set to the default status of the Redmine instance.
  • When attaching a file to an issue, include the entry ID in the request as file_entry_id=entry ID.
  • To create a custom field, navigate to the server URL with administrative privileges, click Administration (located at the top left), select Custom fields, and then proceed to create a new custom field. Once created, you can add values as needed
  • To create a category/version, navigate to the server URL > click Settings (top bar) > Versions tab and Issue categories tab.

Base Command#

redmine-issue-create

Input#

Argument NameDescriptionRequired
project_idThe project ID for this issue. If not specified, the value from the instance configuration will be used.Optional
tracker_id- A tracker ID (e.g., 1,2,3).
- Get the tracker_name to tracker_id mapping by using the command redmine-tracker-id-list.
- If an invalid ID was entered, the default tracker ID set in the Redmine instance wil be used.
Required
priority_id- A priority ID (e.g., 1,2,3).
- Get the priority_name to priority_id mapping by using the command redmine-priority-id-list.
Required
subjectThe subject for this issue.Required
descriptionA description for this issue.Optional
category_idThe category ID for this issue.Optional
fixed_version_idThe target version ID for this issue.Optional
assigned_to_idThe ID of the user to assign the issue to.Optional
parent_issue_idThe ID of the parent issue.Optional
custom_fieldsThe custom field to update.
- "The format is {\"customFieldID2\": \"value3\", \"customFieldID1\": [\"value1\",\"value2\"]}."
- Use an array if the field is of multiselect type.
- Instruction for each custom field type:
- Boolean: use "0" for False and "1" for True.
- Date: the format is "yyyy-mm-dd".
- Float: A number with two digits after the decimal point.
- Integer: A number.
- Key/Value list: Use the Key (ID) of the value.
- User: Use the user ID.
- Version- use the version ID.
Optional
watcher_user_idsAn array with watcher user IDs for this issue -> 1,2,3.Optional
is_privateIs the issue private?. Possible values are: True, False.Optional
estimated_hoursThe number of hours estimated for this issue.Optional
file_entry_idThe entry ID of the file to upload.Optional
file_nameThe name of the file to attach. Make sure the file name ends with .jpg/png/txt.Optional
file_descriptionThe description of the file you attached.Optional
file_content_typeThe file content type of the file you attached.Optional

Context Output#

PathTypeDescription
Redmine.Issue.idsrtThe ID of the new issue.
Redmine.Issue.priority.idstrThe ID of the priority of the issue.
Redmine.Issue.tracker.idstrThe ID of the tracker of the issue.
Redmine.Issue.project.idstrThe ID of the project of the issue.
Redmine.Issue.status.idstrThe ID of the status of the issue.
Redmine.Issue.subjectstrThe subject of the issue.

Command example#

!redmine-issue-create priority_id=High subject=helloExample tracker_id=1 project_id=1 watcher_user_ids=5,6 custom_fields=1:helloCustom priority_id=1

Context Example#

{
"Redmine": {
"Issue": {
"author": {
"id": 6,
"name": "Integration Test"
},
"closed_on": null,
"created_on": "2024-04-07T11:59:34Z",
"custom_fields": [
{
"id": 1,
"name": "Team_of_workers",
"value": "helloCustom"
}
],
"description": null,
"done_ratio": 0,
"due_date": null,
"estimated_hours": null,
"id": "167",
"is_private": false,
"priority": {
"id": 1,
"name": "Low"
},
"project": {
"id": 1,
"name": "Cortex XSOAR"
},
"start_date": "2024-04-07",
"status": {
"id": 1,
"is_closed": false,
"name": "New"
},
"subject": "helloExample",
"total_estimated_hours": null,
"tracker": {
"id": 1,
"name": "Bug"
},
"updated_on": "2024-04-07T11:59:34Z"
}
}
}

Human Readable Output#

The issue you created:#

IdProjectTrackerStatusPriorityAuthorCreated OnSubjectStart DateCustom Fields
167Cortex XSOARBugNewLowIntegration Test2024-04-07T11:59:34ZhelloExample2024-04-07- name: Team_of_workers
value: helloCustom

redmine-issue-list#


Display a list of issues

Base Command#

redmine-issue-list

Input#

Argument NameDescriptionRequired
page_numberThe page number.Optional
page_sizeThe page size. Default value is 50, if limit is not specified.Optional
limitThe number of issues to display in the response (maximum is 100). If page_number or page_size are specified, this field will be ignored. Default is 25.Optional
sortA field by which to sort the results. Append ":desc" to invert the order.
- Possible values:
1. tracker.
2. status.
3. priority.
4. project.
5. subproject.
6. assigned_to.
- For example: sort=tracker:desc.
Optional
includeAn array of extra fields to fetch.
- Possible values:
1. attachments.
2. relations.
Optional
issue_idAn array of issue IDs to display -> 1,2,3.Optional
project_idAa project ID to display issues of this project. If not specified here or in the instance configuration, all projects will be displayed.Optional
subproject_idA subproject ID to display issues of this subproject (use "project_id=someID" and "subproject_id=!name_of_subproject" to exclude subprojects).Optional
tracker_id- A tracker ID (e.g., 1,2,3).
- Get the tracker_name to tracker_id mapping by using the command redmine-tracker-id-list.
Optional
status- A status ID (e.g., 1,2,3) or use predefined values.
- Possible values: Open/Closed/All from the predefined values or use any of your custom status ids (e.g., 1).
Optional
assigned_to_idAn assigned-to ID to display issues assigned to this user ID.Optional
parent_idA parent ID to display issues that are under this parent ID.Optional
custom_field- The custom field to filter by. The format is costumFieldID:Value.
- To filter according to the desired custom field, ensure that it is marked as 'used as a filter' and 'searchable' in your Redmine server settings.
- You can only filter one custom field at a time.
- Make sure the custom field ID which was entered is valid, or the request won't fail but will not be filtered correctly.
Optional

Context Output#

PathTypeDescription
Redmine.IssuedictA list of issues.
Redmine.Issue.idstrA list of issues.

Command example#

!redmine-issue-list limit=2

Context Example#

{
"Redmine": {
"Issue": [
{
"author": {
"id": 6,
"name": "Integration Test"
},
"closed_on": null,
"created_on": "2024-03-11T09:16:47Z",
"custom_fields": [
{
"id": 1,
"name": "Team_of_workers",
"value": "helloCustom"
}
],
"description": null,
"done_ratio": 0,
"due_date": null,
"estimated_hours": null,
"id": "130",
"is_private": false,
"priority": {
"id": 3,
"name": "High"
},
"project": {
"id": 1,
"name": "Cortex XSOAR"
},
"spent_hours": 0,
"start_date": "2024-03-11",
"status": {
"id": 1,
"is_closed": false,
"name": "New"
},
"subject": "subjectChanged",
"total_estimated_hours": null,
"total_spent_hours": 0,
"tracker": {
"id": 1,
"name": "Bug"
},
"updated_on": "2024-03-11T09:16:54Z"
},
{
"author": {
"id": 6,
"name": "Integration Test"
},
"closed_on": null,
"created_on": "2024-03-11T09:08:09Z",
"custom_fields": [
{
"id": 1,
"name": "Team_of_workers",
"value": "helloCustom"
}
],
"description": null,
"done_ratio": 0,
"due_date": null,
"estimated_hours": null,
"id": "129",
"is_private": false,
"priority": {
"id": 3,
"name": "High"
},
"project": {
"id": 1,
"name": "Cortex XSOAR"
},
"spent_hours": 0,
"start_date": "2024-03-11",
"status": {
"id": 1,
"is_closed": false,
"name": "New"
},
"subject": "helloExample",
"total_estimated_hours": null,
"total_spent_hours": 0,
"tracker": {
"id": 1,
"name": "Bug"
},
"updated_on": "2024-03-11T09:08:09Z"
}
]
}
}

Human Readable Output#

Showing 2 results from page 1:#

Issues Results:#

IDTrackerStatusPriorityAuthorSubjectStart Datedone_ratioIs PrivateCustom FieldsCreated Onupdated_on
130BugNewHighIntegration TestsubjectChanged2024-03-110false- name: Team_of_workers
value: helloCustom
2024-03-11T09:16:47Z2024-03-11T09:16:54Z
129BugNewHighIntegration TesthelloExample2024-03-110false- name: Team_of_workers
value: helloCustom
2024-03-11T09:08:09Z2024-03-11T09:08:09Z

redmine-issue-update#


Update an existing issue. When attaching a file to an issue, include the entry ID in the request as file_entry_id=entry ID. To create a custom field, navigate to the server URL with administrative privileges, click 'Administration (located at the top left), select Custom fields, and proceed to create a new custom field. Once created, you can add values as needed.

Base Command#

redmine-issue-update

Input#

Argument NameDescriptionRequired
issue_idThe ID of the issue to be updated.Required
project_idThe ID of the project to associate with the issue. If not specified, the value from integration configuration will be taken if specified.Optional
tracker_id- A tracker ID (e.g., 1,2,3).
- Get the tracker_name to tracker_id mapping by using the command redmine-tracker-id-list.
- If an invalid ID was entered, tracker_id won't be changed and won't raise an error.
Optional
priority_id- A priority ID (e.g., 1,2,3).
- Get the priority_name to priority_id mapping by using the command redmine-priority-id-list.
Optional
status- A status ID (e.g., 1,2,3).
- Get the status_name to status_id mapping by using the command redmine-status-id-list.
- If an invalid ID was entered, status_id won't be changed and won't raise an error.
Optional
subjectThe subject of the issue.Optional
descriptionThe description of the issue.Optional
category_idThe ID of the category to assign to the issue.Optional
fixed_version_idThe ID of the fixed version for the issue.Optional
assigned_to_idThe ID of the user to whom the issue is assigned.Optional
parent_issue_idThe ID of the parent issue, if applicable.Optional
custom_fieldsThe custom field to update.
- "The format is {\"customFieldID2\": \"value3\", \"customFieldID1\": [\"value1\",\"value2\"]}."
- Use an array if the field is of multiselect type.
- Instruction for each custom field type:
- Boolean: use "0" for False and "1" for True.
- Date: the format is "yyyy-mm-dd".
- Float: A number with two digits after the decimal point.
- Integer: A number.
- Key/Value list: Use the Key (ID) of the value.
- User: Use the user ID.
- Version- use the version ID.
Optional
watcher_user_idsA comma-separated list of watcher IDs. -> 1,2,3.Optional
is_privateIs the issue private?. Possible values are: True, False.Optional
estimated_hoursThe estimated number of hours to complete the issue.Optional
notesAdditional comments about the update.Optional
private_notesSpecifies if the notes are private. Possible values are: True, False.Optional
file_entry_idThe entry ID of the file to upload. Required if uploading a file.Optional
file_nameThe name of the file to upload (should end with .jpg/.png/.txt, etc.).Optional
file_descriptionThe description of the attached file.Optional
file_content_typeThe content type of the attached file (image/jpg or image/png or text/txt, etc.).Optional

Context Output#

There is no context output for this command.

Command example#

!redmine-issue-update issue_id=130 subject=subjectChanged

Human Readable Output#

Issue with id 130 was successfully updated.

redmine-issue-get#


Show an issue by id

Base Command#

redmine-issue-get

Input#

Argument NameDescriptionRequired
issue_idThe ID of the wanted issue.Required
include- Fields to add to the response.
- Possible values:
1.children.
2.attachments.
3.relations.
4.changesets.
5.journals.
6.watchers.
7.allowed_statuses.
- Separate multiple values with comma ONLY.
Optional

Context Output#

PathTypeDescription
Redmine.Issue.idstrThe ID of the found issue.
Redmine.Issue.priority.idstrThe ID of the priority of the issue.
Redmine.Issue.tracker.idstrThe ID of the tracker of the issue.
Redmine.Issue.project.idstrThe ID of the project of the issue.
Redmine.Issue.status.idstrThe ID of the status of the issue.
Redmine.Issue.subjectstrThe subject of the issue.
Redmine.Issue.watchers.idstrThe watchers of the issue.

Command example#

!redmine-issue-get issue_id=130 include=watchers

Context Example#

{
"Redmine": {
"Issue": {
"author": {
"id": 6,
"name": "Integration Test"
},
"closed_on": null,
"created_on": "2024-03-11T09:16:47Z",
"custom_fields": [
{
"id": 1,
"name": "Team_of_workers",
"value": "helloCustom"
}
],
"description": null,
"done_ratio": 0,
"due_date": null,
"estimated_hours": null,
"id": "130",
"is_private": false,
"priority": {
"id": 3,
"name": "High"
},
"project": {
"id": 1,
"name": "Cortex XSOAR"
},
"spent_hours": 0,
"start_date": "2024-03-11",
"status": {
"id": 1,
"is_closed": false,
"name": "New"
},
"subject": "subjectChanged",
"total_estimated_hours": null,
"total_spent_hours": 0,
"tracker": {
"id": 1,
"name": "Bug"
},
"updated_on": "2024-03-11T09:16:54Z",
"watchers": [
{
"id": 5,
"name": "admin tests"
},
{
"id": 6,
"name": "Integration Test"
}
]
}
}
}

Human Readable Output#

Issues List:#

IdProjectTrackerStatusPriorityAuthorSubjectStartDateDoneRatioIsPrivateCustomFieldsCreatedOnWatchers
130Cortex XSOARBugNewHighIntegration TestsubjectChanged2024-03-110false- name: Team_of_workers
value: helloCustom
2024-03-11T09:16:47Z- name: admin tests
- name: Integration Test

redmine-issue-delete#


Delete an issue by its ID

Base Command#

redmine-issue-delete

Input#

Argument NameDescriptionRequired
issue_idThe ID of the about to be deleted issue.Required

Context Output#

There is no context output for this command.

Command example#

!redmine-issue-delete issue_id=130

Human Readable Output#

Issue with id 130 was deleted successfully.

redmine-issue-watcher-add#


Add a watcher to the specified issue

Base Command#

redmine-issue-watcher-add

Input#

Argument NameDescriptionRequired
issue_idThe ID of the issue to which you want to add a watcher.Required
watcher_idThe ID of the watcher you want to add to the issue.Required

Context Output#

There is no context output for this command.

Command example#

!redmine-issue-watcher-add issue_id=130 watcher_id=1

Human Readable Output#

Watcher with id 1 was added successfully to issue with id 130.

redmine-issue-watcher-remove#


Remove a watcher of an issue

Base Command#

redmine-issue-watcher-remove

Input#

Argument NameDescriptionRequired
issue_idThe ID of the issue from which you want to remove the watcher.Required
watcher_idThe ID of the watcher you want to remove from the issue.Required

Context Output#

There is no context output for this command.

Command example#

!redmine-issue-watcher-remove issue_id=130 watcher_id=1

Human Readable Output#

Watcher with id 1 was removed successfully from issue with id 130.

redmine-project-list#


Retrieve a list of all projects, including both public and private ones that the user has access to.

Base Command#

redmine-project-list

Input#

Argument NameDescriptionRequired
include- Specify which additional fields to include in the response.
- Choose from the following options:
1. trackers.
2. issue_categories
3. enabled_modules
4. time_entry_activities
5. issue_custom_fields
- Separate multiple values with comma ONLY.
Optional

Context Output#

PathTypeDescription
Redmine.ProjectArrayDisplay a list of projects accessible to the user.

Command example#

!redmine-project-list

Context Example#

{
"Redmine": {
"Project": {
"created_on": "2024-02-29T10:34:23Z",
"custom_fields": [
{
"id": 3,
"name": "second_custom_field",
"value": null
}
],
"description": "",
"homepage": "",
"id": "1",
"identifier": "cortex-xsoar",
"inherit_members": false,
"is_public": "True",
"name": "Cortex XSOAR",
"status": "1",
"updated_on": "2024-02-29T10:34:23Z"
}
}
}

Human Readable Output#

Projects List:#

IdNameIdentifierStatusIsPublicCreatedOnUpdatedOn
1Cortex XSOARcortex-xsoar1True2024-02-29T10:34:23Z2024-02-29T10:34:23Z

redmine-custom-field-list#


Retrieve a list of all custom fields.

Base Command#

redmine-custom-field-list

Input#

There are no input arguments for this command.

Context Output#

PathTypeDescription
Redmine.CustomFielddictRetrieve details of all custom fields.
Redmine.CustomField.idstrDisplay ids of custom fields.
Redmine.CustomField.namestrDisplay names of custom fields.
Redmine.CustomField.customized_typestrDisplay customized_type of custom fields.

Command example#

!redmine-custom-field-list

Context Example#

{
"Redmine": {
"CustomField": [
{
"customized_type": "issue",
"default_value": "",
"description": "specify the team of workers under this issue",
"field_format": "string",
"id": "1",
"is_filter": "True",
"is_required": "False",
"max_length": null,
"min_length": null,
"multiple": false,
"name": "Team_of_workers",
"regexp": "",
"roles": [],
"searchable": true,
"trackers": [
{
"id": 1,
"name": "Bug"
},
{
"id": 2,
"name": "Feature"
},
{
"id": 3,
"name": "Support"
}
],
"visible": true
},
{
"customized_type": "project",
"default_value": "",
"description": "",
"field_format": "string",
"id": "3",
"is_filter": "False",
"is_required": "False",
"max_length": null,
"min_length": null,
"multiple": false,
"name": "second_custom_field",
"regexp": "",
"searchable": false,
"visible": true
}
]
}
}

Human Readable Output#

Custom Fields List:#

IdNameCustomizedTypeFieldFormatIsRequiredIsFilterSearchableTrackers
1Team_of_workersissuestringFalseTrue- id: 1
name: Bug
- id: 2
name: Feature
- id: 3
name: Support
3second_custom_fieldprojectstringFalseFalse

redmine-user-id-list#


  • Retrieve a list of users with optional filtering options.
  • This command requires admin privileges in your Redmine account.

Base Command#

redmine-user-id-list

Input#

Argument NameDescriptionRequired
statusSpecify the status of users to retrieve. Possible values are: Active, Registered, Locked.Optional
nameSearch for users matching a specific name (searches in first name, last name, and email).Optional
group_idSpecify the group ID to filter users by.Optional

Context Output#

PathTypeDescription
Redmine.UsersdictA list of users.
Redmine.Users.idstrA list of users IDs.
Redmine.Users.loginstrA list of users login usernames.
Redmine.Users.adminstrA list of users admins permission.
Redmine.Users.firstnamestrA list of users first name.
Redmine.Users.lastnamestrA list of users last name.
Redmine.Users.mailstrA list of users mails.

Command example#

!redmine-user-id-list

Context Example#

{
"Redmine": {
"Users": [
{
"admin": "True",
"created_on": "2024-02-28T19:47:56Z",
"firstname": "admin",
"id": "5",
"last_login_on": "2024-02-29T10:25:08Z",
"lastname": "tests",
"login": "admin",
"mail": "admin@redmine-test.local",
"passwd_changed_on": "2024-02-28T19:49:17Z",
"twofa_scheme": null,
"updated_on": "2024-02-28T19:50:49Z"
},
{
"admin": "True",
"created_on": "2024-02-29T10:27:31Z",
"firstname": "Integration",
"id": "6",
"last_login_on": "2024-02-29T10:55:25Z",
"lastname": "Test",
"login": "demiadmin",
"mail": "demiadmin@redmine-test.local",
"passwd_changed_on": "2024-02-29T10:27:31Z",
"twofa_scheme": null,
"updated_on": "2024-02-29T10:27:31Z"
},
{
"admin": "True",
"created_on": "2024-02-28T18:34:10Z",
"firstname": "UserName",
"id": "1",
"last_login_on": "2024-02-29T09:50:10Z",
"lastname": "LastName",
"login": "user",
"mail": "user@example.com",
"passwd_changed_on": null,
"twofa_scheme": null,
"updated_on": "2024-02-28T18:34:10Z"
}
]
}
}

Human Readable Output#

Users List:#

IDLoginAdminFirst NameLast NameEmailCreated OnLast Login On
5adminTrueadmintestsadmin@redmine-test.local2024-02-28T19:47:56Z2024-02-29T10:25:08Z
6demiadminTrueIntegrationTestdemiadmin@redmine-test.local2024-02-29T10:27:31Z2024-02-29T10:55:25Z
1userTrueUserNameLastNameuser@example.com2024-02-28T18:34:10Z2024-02-29T09:50:10Z

redmine-priority-id-list#


Returns a list of priorities (priority_name to priority_id).

Base Command#

redmine-priority-id-list

Input#

There are no input arguments for this command.

Context Output#

PathTypeDescription
Redmine.priorities.IDstrID of the priority field.
Redmine.priorities.NamestrName of the priority field.

Command example#

!redmine-priority-id-list

Context Example#

{
"Redmine": {
"priorities": [
{
"ID": 1,
"Name": "Low"
},
{
"ID": 2,
"Name": "Normal"
},
{
"ID": 3,
"Name": "High"
},
{
"ID": 4,
"Name": "Urgent"
},
{
"ID": 5,
"Name": "Immediate"
}
]
}
}

Human Readable Output#

priorities name to id List:#

IDName
1Low
2Normal
3High
4Urgent
5Immediate

redmine-status-id-list#


Returns a list of statuses (status_name to status_id).

Base Command#

redmine-status-id-list

Input#

There are no input arguments for this command.

Context Output#

PathTypeDescription
Redmine.statuses.IDstrID of the status field.
Redmine.Users.NamestrName of the status field.

Command example#

!redmine-status-id-list

Context Example#

{
"Redmine": {
"statuses": [
{
"ID": 1,
"Name": "help"
},
{
"ID": 2,
"Name": "In Progress"
},
{
"ID": 3,
"Name": "Resolved"
},
{
"ID": 4,
"Name": "Feedback"
},
{
"ID": 5,
"Name": "Closed"
},
{
"ID": 6,
"Name": "Rejected"
}
]
}
}

Human Readable Output#

statuses name to id List:#

IDName
1help
2In Progress
3Resolved
4Feedback
5Closed
6Rejected

redmine-tracker-id-list#


Returns a list of trackers (tracker_name to tracker_id).

Base Command#

redmine-tracker-id-list

Input#

There are no input arguments for this command.

Context Output#

PathTypeDescription
Redmine.trackers.IDstrID of the tracker field.
Redmine.trackers.NamestrName of the tracker field.

Command example#

!redmine-tracker-id-list

Context Example#

{
"Redmine": {
"trackers": [
{
"ID": 1,
"Name": "Bug111"
},
{
"ID": 2,
"Name": "Feature"
},
{
"ID": 3,
"Name": "Support"
}
]
}
}

Human Readable Output#

trackers name to id List:#

IDName
1Bug111
2Feature
3Support