xMatters
xMatters helps identify, prevent, and resolve IT issues before they impact customers whether it's a simple bug fix or a complex major incident.
Connect xMatters with Devo SOAR
Navigate to Automations > Integrations.
Search for xMatters.
Click Details, then the + icon. Enter the required information in the following fields.
Label: Enter a connection name.
Reference Values: Define variables here to templatize integration connections and actions. For example, you can use https://www.{{hostname}}.com where, hostname is a variable defined in this input. For more information on how to add data, see 'Add Data' Input Type for Integrations.
Verify SSL: Select option to verify connecting server's SSL certificate (Default is Verify SSL Certificate).
Remote Agent: Run this integration using the Devo SOAR Remote Agent.
Server URL: Rest API URL to access xMatters.
Username: Username to access xMatters.
Password: Password to access xMatters.
After you've entered all the details, click Connect.
Actions for xMatters
Trigger Event
Trigger an event.
Input Field
Choose a connection that you have previously created and then fill in the necessary information in the following input fields to complete the connection.
Input Name | Description | Required |
---|---|---|
ID | Jinja-templated id of the existing communication plan/form. Example: {{id_name_column}}. | Required |
Recipients | Jinja-templated text containing the recipients for trigger. | Â |
Example: [{"id": "{{id_column}}", "recipientType": "DYNAMIC_TEAM", "responseCountThreshold": 1}, {"id": "f19d8b10", "recipientType": "GROUP", "responseCountThreshold": 3}]. | Optional | Â |
Priority | Select Priority (Default is 'MEDIUM'). | Optional |
Expiration In Minutes | Jinja-templated text containing the expiration in minutes. Example: {{expiration_in_minutes_name_column}}. | Optional |
Override Device Restrictions | Select Override Device Restrictions. | Optional |
Escalation Override | Select Escalation Override. | Optional |
Bypass Phone Intro | Select Bypass Phone Intro. | Optional |
Require Phone Password | Select Require Phone Password. | Optional |
Voicemail Options | Jinja-templated text containing voicemail_options. | Â |
Example: {"retry": 0, "every": 60, "leave": "callbackonly"}. | Optional | Â |
Target All Devices | Select whether target all devices. | Optional |
Properties | Jinja-templated text containing property value object. Example: { \"myBooleanProperty\" : \"{{boolean_column}}\", \"myNumberProperty\": {{number_column}}, \"myTextProperty\" : \"See the attached evacuation route map.\", \"myListProperty\" : [\"Grocery\", \"Automotive\", \"Seasonal\"] }. | Optional |
Output
A JSON object containing multiple rows of result:
has_error: True/False
error: message/null
result: Request ID
``` {json}{ "result": { "requestId": "9ab6d7c6-31b7-4a51-9d85-9901d442a3a5" }, "error": null, "has_error": false }
## Get Events
Get list of events
### Input Field
Choose a connection that you have previously created and then fill in the necessary information in the following input fields to complete the connection.
| Input Name | Description | Required |
| : -------- | : -------- | : -------- |
| Form | Jinja-templated text containing the comma separated ids of the existing form.
Example: '{{form1_column}}, {{form2_column}}'. | Optional |
| Request ID | Jinja-templated text containing the requestId. Example: {{request_id_index_column}}. | Optional |
| Limit | Maximum number of results to return per parent row(Default is 100,000). | Optional |
### Output
A JSON object containing multiple rows of result:
- has_error: True/False
- error: message/null
- result: List of events
``` {json}{
"incident": "INC-5",
"eventType": "USER",
"name": "Incident: INC-5: Y1",
"priority": "MEDIUM",
"escalationOverride": false,
"responseCountsEnabled": false,
"eventId": "271182000",
"annotations": {
"count": 0,
"data": [],
"links": {
"self": "/api/xm/1/events/271182000/annotations?offset=0&limit=100"
},
"total": 0
},
"links": {
"self": "/api/xm/1/events/871fd9ed-9466-4df5-808d-9e8749b2a9d6"
},
"has_error": false,
"id": "871fd9ed-9466-4df5-808d-9e8749b2a9d6",
"error": null,
"requirePhonePassword": false,
"status": "ACTIVE",
"relatedIncident": {
"id": "b3c1cc7d-3f92-4643-8bf0-0e1d005cd5bf",
"links": {
"self": "/api/xm/1/incidents/b3c1cc7d-3f92-4643-8bf0-0e1d005cd5bf"
}
},
"bypassPhoneIntro": false,
"requestId": "972977c1-c298-422a-8fa1-f15473a60bab",
"submitter": {
"firstName": "Rajesh",
"id": "4e446008-d9df-41e5-996f-791114401434",
"lastName": "Kumar",
"links": {
"self": "/api/xm/1/people/4e446008-d9df-41e5-996f-791114401434"
},
"recipientType": "PERSON",
"targetName": "rajesh"
},
"floodControl": false,
"form": {
"id": "6195ede1-126e-43e0-8003-cda95e54dcd6",
"name": "New Incident Notification"
},
"overrideDeviceRestrictions": false,
"plan": {
"iconOverride": "/static/images/logos/INCIDENT_RESOLUTION.png",
"id": "4fe1ce4f-53e4-437f-baa0-d8b88ef2f9fb",
"name": "Incident Resolution for My Service"
},
"created": "2021-04-08T14:43:53.756+0000"
}
Get An Event
Get a details of event
Input Field
Choose a connection that you have previously created and then fill in the necessary information in the following input fields to complete the connection.
Input Name | Description | Required |
---|---|---|
Event Id | Jinja-templated text containing the event ID. | Â |
Example: '{{event_id_index_column}}'. | Required | Â |
Output
A JSON object containing multiple rows of result:
has_error: True/False
error: message/null
result: Event Details
{json}{
"result": {
"id": "871fd9ed-9466-4df5-808d-9e8749b2a9d6",
"name": "Incident: INC-5: Y1",
"eventType": "USER",
"plan": {
"id": "4fe1ce4f-53e4-437f-baa0-d8b88ef2f9fb",
"name": "Incident Resolution for My Service",
"iconOverride": "/static/images/logos/INCIDENT_RESOLUTION.png"
},
"form": {
"id": "6195ede1-126e-43e0-8003-cda95e54dcd6",
"name": "New Incident Notification"
},
"floodControl": false,
"submitter": {
"id": "4e446008-d9df-41e5-996f-791114401434",
"targetName": "rajesh",
"firstName": "Rajesh",
"lastName": "Kumar",
"recipientType": "PERSON",
"links": {
"self": "/api/xm/1/people/4e446008-d9df-41e5-996f-791114401434"
}
},
"recipients": {
"count": 0,
"total": 0,
"data": [],
"links": {
"self": "/api/xm/1/events/871fd9ed-9466-4df5-808d-9e8749b2a9d6/recipients?offset=0&limit=100"
}
},
"priority": "MEDIUM",
"annotations": {
"count": 0,
"total": 0,
"data": [],
"links": {
"self": "/api/xm/1/events/871fd9ed-9466-4df5-808d-9e8749b2a9d6/annotations?offset=0&limit=100"
}
},
"incident": "INC-5",
"expirationInMinutes": 60,
"notificationAuditCount": 0,
"overrideDeviceRestrictions": false,
"escalationOverride": false,
"bypassPhoneIntro": false,
"requirePhonePassword": false,
"voicemailOptions": {
"retry": 0,
"every": 60,
"leave": "callbackonly"
},
"responseOptions": {
"count": 2,
"total": 2,
"data": [
{
"id": "2e16f31e-8026-406d-b7f5-dc063e21915e",
"number": 1,
"text": "Accept",
"description": "Engage with this incident as a resolver",
"prompt": "Accept",
"action": "STOP_NOTIFYING_TARGET",
"contribution": "POSITIVE",
"joinConference": false,
"redirectUrl": "",
"allowComments": true
},
{
"id": "61d61427-be02-41ca-9703-10b2b2850014",
"number": 2,
"text": "Escalate",
"description": "Escalate this incident to the next available resolver",
"prompt": "Escalate",
"action": "ESCALATE",
"contribution": "NEGATIVE",
"joinConference": false,
"redirectUrl": "",
"allowComments": true
}
]
},
"messages": {
"count": 1,
"total": 1,
"data": [
{
"messageType": "SUBJECT_AND_BODY",
"language": "EN",
"template": {
"id": "5a046b4a-d7e4-4e2a-bd7d-a9ae1cb5f4be"
},
"subject": "Incident: INC-5: Y1",
"body": "<div style=\"width: 768px; margin-left: auto; margin-right: auto;\">\n <div style=\"width: 540px; margin-left: auto; margin-right: auto;\">\n <div style=\"margin: auto; width: 100%; margin-top: 50px; margin-bottom: 20px; display: flex\">\n <div style=\"margin: auto; width: 50%;\">\n <img style=\"display: block; vheight:20px; color:blue \"\n src=\"https://s3-xmatters-content.s3.amazonaws.com/email-images/xMatters-logo-medium.png\" />\n </div>\n <div style=\"margin: auto; width: 50%; text-align: center; color:#999999;\">\n Digital Service Availability Platform\n </div>\n </div>\n\n <div style=\"padding-left: auto; padding-right: auto;\">\n <img src=\"https://static.xmatters.com/email-images/incident-Medium.png\"\n style=\"display: block; width:66px; height:66px; margin-left: auto; margin-right: auto; margin-bottom: 20px;\" />\n </div>\n\n <div style=\"text-align: center; margin: 30px auto\">\n [First Name] [Last Name], you're needed as a resolver:\n </div>\n\n <div style=\"border: #e4e4e4 1px solid\">\n <div style=\"width: 100%; display: flex; border-bottom: #e4e4e4 1px solid; \" >\n <div style=\"width: 50%; text-align: center; display: block; border-right: #e4e4e4 1px solid; \">\n <div style=\"margin: auto; text-align: center; display: block; padding: 15px 5px;\">\n <div style=\"font-weight: bold\">Status</div>\n <div style=\"display: block; margin-left: auto; margin-right: auto\">\n <img src=\"https://static.xmatters.com/email-images/Open.png\"\n style=\"display: inline-block; width:13px; height:13px; margin-right: 5px; margin-top: 2px\" />\n <div style=\"display: inline-block\">Open</div>\n </div>\n </div>\n </div>\n <div style=\"width: 50%; text-align: center; display: block;\">\n <div style=\"margin: auto; text-align: center; display: block; padding: 15px 5px;\">\n <div style=\"font-weight: bold\"> Severity </div>\n <div style=\"display: block; margin-left: auto; margin-right: auto\">\n <img src=\"https://static.xmatters.com/email-images/severity-Medium.png\"\n style=\"display: inline-block; width:13px; height:13px; margin-right: 5px; margin-top: 2px\" />\n <div style=\"display: inline-block\">Medium</div>\n </div>\n </div>\n </div>\n </div>\n\n <div style=\"padding: 15px 15px; border-bottom: #e4e4e4 1px solid; \">\n <span style=\"font-weight: bold\">Incident:</span>\n <a href=\"${other.companyUrl}/xmatters/app.do#incidents/INC-5\">INC-5</a>\n </div>\n <div style=\"padding: 15px 15px; display: block; border-bottom: #e4e4e4 1px solid; \">\n <div style=\"font-weight: bold; margin-bottom: 5px\">Summary:</div>\n <div>Y1</div>\n </div>\n <div style=\"padding: 15px 15px; display: block; border-bottom: #e4e4e4 1px solid; \">\n <div style=\"font-weight: bold; margin-bottom: 5px\">Description:</div>\n <div>sdsd</div>\n </div>\n <div style=\"padding: 15px 15px; border-bottom: #e4e4e4 1px solid; \">\n <span style=\"font-weight: bold\">Initiated at:</span>\n <span>02:43 PM UTC, April 08, 2021</span>\n </div>\n <div style=\"padding: 15px 15px; border-bottom: #e4e4e4 1px solid;\">\n <span style=\"font-weight: bold\">Opened by:</span>\n <span>rajesh</span>\n </div>\n <div style=\"padding: 15px 15px; border-bottom: #e4e4e4 1px solid; \">\n <span style=\"font-weight: bold\">Alerting path:</span>\n <span>[Alert Context]</span>\n </div>\n </div>\n <div id=\"incident-responses\" style=\"margin-top: 30px\">\n <!--__X_RESPONSE_CHOICES_PLACEHOLDER__-->\n </div>\n </div>\n</div>"
}
]
},
"eventId": "271182000",
"created": "2021-04-08T14:43:53.756+0000",
"terminated": "2021-04-08T15:43:55.050+0000",
"status": "TERMINATED",
"links": {
"self": "/api/xm/1/events/871fd9ed-9466-4df5-808d-9e8749b2a9d6"
},
"relatedIncident": {
"id": "b3c1cc7d-3f92-4643-8bf0-0e1d005cd5bf",
"links": {
"self": "/api/xm/1/incidents/b3c1cc7d-3f92-4643-8bf0-0e1d005cd5bf"
}
},
"integration": {
"id": "b4b15d5b-65a6-4aea-8471-2d52d8c79dbd"
},
"responseCountsEnabled": false,
"requestId": "972977c1-c298-422a-8fa1-f15473a60bab",
"properties": {
"created time#en": "02:43 PM UTC, April 08, 2021",
"description#en": "sdsd",
"incidentID#en": "INC-5",
"reporter#en": "rajesh",
"severity#en": "Medium",
"status#en": "Open",
"summary#en": "Y1"
}
},
"error": null,
"has_error": false
}
Release Notes
v2.0.0
- Updated architecture to support IO via filesystem