This category facilitates the automation of incident responses through rulesets and webhook integrations, allowing for timely and efficient handling of incidents based on predefined criteria.
See full Ruleset Management and Event Handling API →
Focused on monitoring incidents throughout their lifecycle, this category provides tools for tracking incident statuses, actions taken, and overall performance, ensuring effective resolution and accountability.
See full Incident Tracking API →
This category enables the organization and management of on-call schedules for incident response teams, ensuring that appropriate personnel are available to respond to incidents at all times.
See full Incident Schedule Management API →
rule type
, name
, description
, urgency level
, and assigned responders (e.g., teams).team
and organisation
, showing rules defined at different levels of your environment.const axios = require('axios');
const url = "https://incident-query.api.pinghome.io/v1/rulesets";
axios.get(url, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
type
of rule (e.g., state-change
), an array of conditions
, the target team_id
or assignees
, urgency
level, and a descriptive name
and description
for context.const axios = require('axios');
const url = 'https://incident-cmd.api.pinghome.io/v1/ruleset';
const data = {
rule_type: 'state-change',
conditions: [{ values: ['10'], operator: 'equal', type: 'json-check', key: 'products[0].count' }],
level: 'team',
team_id: 'c03b02ec-244f-4d2c-8f68-3910071ed5c8',
name: 'Name',
description: 'Description',
urgency: 'medium',
assignees: [{ type: 'team', id: '445a5c1f-c0eb-403a-96d7-3976e5dc74ed' }]
};
axios.post(url, data, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
ruleset_id
in the path and submitting the updated rule configuration in the request body. You can modify fields such as the type
of the rule (e.g., state-change
), the list of conditions
, urgency
, description
, name
, and assigned assignees
(e.g., team IDs).const axios = require('axios');
const url = 'https://incident-cmd.api.pinghome.io/v1/ruleset/c03b02ec-244f-4d2c-8f68-3910071ed5c8';
const data = {
rule_type: 'state-change',
conditions: [{ values: ['10'], operator: 'equal', type: 'json-check', key: 'products[0].count' }],
level: 'team',
team_id: 'c03b02ec-244f-4d2c-8f68-3910071ed5c8',
name: 'Name',
description: 'Description',
urgency: 'medium',
assignees: [{ type: 'team', id: '445a5c1f-c0eb-403a-96d7-3976e5dc74ed' }]
};
axios.put(url, data, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
ruleset_id
in the path. Once removed, the ruleset will no longer trigger incidents based on its defined conditions.const axios = require('axios');
const url = 'https://incident-cmd.api.pinghome.io/v1/ruleset/c03b02ec-244f-4d2c-8f68-3910071ed5c8';
axios.delete(url, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
ruleset_id
in the path. Each action defines what automated task should be executed when the ruleset conditions are met — such as updating a status page component or triggering a downstream system.action type
(e.g., trigger-statuspage-update
) and nested settings
that specify the source
(e.g., a resource ID being monitored), the target
(such as a status page component), and the parent
entity (e.g., the linked status page).const axios = require('axios');
const url = "https://incident-query.api.pinghome.io/v1/ruleset/c03b02ec-244f-4d2c-8f68-3910071ed5c8/actions";
axios.get(url, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
ruleset_id
in the path and submitting the updated actions
array in the request body. Each action includes a type
(such as trigger-statuspage-update
) and corresponding settings
.const axios = require('axios');
const url = 'https://incident-cmd.api.pinghome.io/v1/ruleset/445a5c1f-c0eb-403a-96d7-3976e5dc74ed/actions';
const data = {
actions: [
{
type: 'trigger-alerts',
settings: [
{
status_page_id: '445a5c1f-c0eb-403a-96d7-3976e5dc74ed',
component_id: '445a5c1f-c0eb-403a-96d7-3976e5dc74ed'
}
]
}
]
};
axios.put(url, data, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
name
, description
, enabled
status, the URL
to which events should be sent, and the created_at
timestamp.const axios = require('axios');
const url = "https://incident-query.api.pinghome.io/v1/webhooks";
axios.get(url, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
webhook_id
in the path. Each event represents a payload submitted to the webhook endpoint — typically from an external system or alerting service.content_type
of the payload, the raw body
of the received request, the sender’s IP address
, and the received_at
timestamp.last_received_at
and limit
to paginate results and retrieve only the most recent entries.const axios = require('axios');
const url = "https://incident-query.api.pinghome.io/v1/webhook/c03b02ec-244f-4d2c-8f68-3910071ed5c8/events?limit=10&last_received_at=2024-03-15T19:09:39Z";
axios.get(url, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
name
, description
. After creation, the webhook’s unique id
will be returned in the response. This ID can be used to programmatically submit event payloads to the webhook via the Submit Webhook Event endpointconst axios = require('axios');
const url = 'https://incident-cmd.api.pinghome.io/v1/webhook';
const data = {
name: "Webhook name",
description: "Webhook description"
};
axios.post(url, data, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
webhook_id
in the path. This ID is returned when a webhook is created via the Create Webhook endpoint.const axios = require('axios');
const url = 'https://data-gateway.api.pinghome.io/v1/incident/webhook/{id}';
const data = {
example_key: 'example_value'
};
axios.post(url, data, {
headers: {
'Content-Type': 'application/json'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
const axios = require('axios');
const url = "https://incident-query.api.pinghome.io/v1/health-check";
axios.get(url)
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
team_id
in the path. The response includes incidents created manually or triggered through automated rulesets, allowing teams to track their current and historical incident activity.id
, status
, urgency
, created_at
, and description
, providing full visibility into the lifecycle and context of reported issues.const axios = require('axios');
const url = 'https://incident-query.api.pinghome.io/v1/team/c03b02ec-244f-4d2c-8f68-3910071ed5c8/incidents';
axios.get(url, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
incident_id
in the path. These actions reflect both manual and automated responses triggered during the incident’s lifecycle — such as notifications, escalations, or status page updates.type
of action, the target
(e.g., service or component), and timestamps indicating when the action was executed. This gives teams clear visibility into how incidents were handled in real time.const axios = require('axios');
const url = 'https://incident-query.api.pinghome.io/v1/incident/c03b02ec-244f-4d2c-8f68-3910071ed5c8/actions';
axios.get(url, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
team_id
in the path and submitting incident details in the request body. Required fields include the name
of the incident, a brief description
, and its urgency
level (e.g., low, medium, high).const axios = require('axios');
const url = 'https://incident-cmd.api.pinghome.io/v1/team/445a5c1f-c0eb-403a-96d7-3976e5dc74ed/incident';
const data = {
name: "Incident name",
description: "Incident description",
urgency: "medium",
assignees: [
{
type: "team",
id: "445a5c1f-c0eb-403a-96d7-3976e5dc74ed"
}
],
actions: [
{
type: "trigger-alerts",
settings: [
{
status_page_id: "445a5c1f-c0eb-403a-96d7-3976e5dc74ed",
component_id: "445a5c1f-c0eb-403a-96d7-3976e5dc74ed"
}
]
}
]
};
axios.post(url, data, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
incident_id
in the path and submitting the updated values in the request body. You can modify fields such as the name
, description
, and urgency
to reflect changes in incident context, severity, or resolution progress.const axios = require('axios');
const url = 'https://incident-cmd.api.pinghome.io/v1/incident/445a5c1f-c0eb-403a-96d7-3976e5dc74ed';
const data = {
name: "Incident name",
description: "Incident description",
urgency: "medium",
assignees: [
{
type: "team",
id: "445a5c1f-c0eb-403a-96d7-3976e5dc74ed"
}
],
actions: [
{
id: "",
type: "trigger-alerts",
settings: [
{
id: "",
status_page_id: "445a5c1f-c0eb-403a-96d7-3976e5dc74ed",
component_id: "445a5c1f-c0eb-403a-96d7-3976e5dc74ed"
}
]
}
]
};
axios.put(url, data, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
customer_id
in the path. The response includes schedule entries that define which team members are responsible for incident response during specific time intervals.const axios = require('axios');
const url = "https://incident-query.api.pinghome.io/v1/customer/c03b02ec-244f-4d2c-8f68-3910071ed5c8/schedule";
axios.get(url, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
team_member_id
, start_date
, end_date
, and the time recurrence parameters including months_of_year
, weeks_of_month
, week_days
, and time_range
. These options provide flexible scheduling across daily, weekly, or monthly cycles.const axios = require('axios');
const url = 'https://incident-cmd.api.pinghome.io/v1/team/445a5c1f-c0eb-403a-96d7-3976e5dc74ed/schedule';
const data = {
team_member_id: "445a5c1f-c0eb-403a-96d7-3976e5dc74ed",
start_date: "2024-01-01T00:00:00Z",
end_date: "2024-01-31T23:59:59Z",
months_of_year: [1],
weeks_of_month: [1],
week_days: [1],
start_time: "00:00:00",
end_time: "23:59:59"
};
axios.post(url, data, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
team_id
in the path and submitting the updated configuration in the request body. This allows you to modify both the timing and recurrence rules that define when a team member is expected to be on-call.team_member_id
, start_date
, end_date
, and recurrence settings including months_of_year
, weeks_of_month
, week_days
, and the time_range
.team_member_id
to reflect staffing or rotation changes.const axios = require('axios');
const url = 'https://incident-cmd.api.pinghome.io/v1/team/445a5c1f-c0eb-403a-96d7-3976e5dc74ed/schedule';
const data = {
team_member_id: "445a5c1f-c0eb-403a-96d7-3976e5dc74ed",
created_at: "2024-01-01T00:00:00Z",
start_date: "2024-01-01T00:00:00Z",
end_date: "2024-01-31T23:59:59Z",
months_of_year: [1],
weeks_of_month: [1],
week_days: [1],
start_time: "00:00:00",
end_time: "23:59:59"
};
axios.put(url, data, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
team_member_id
and the created_at
timestamp as query parameters. These two values uniquely identify the schedule entry that should be removed.const axios = require('axios');
const url = 'https://incident-cmd.api.pinghome.io/v1/team/445a5c1f-c0eb-403a-96d7-3976e5dc74ed/schedule';
axios.delete(url, {
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
},
params: {
'team_member_id': '445a5c1f-c0eb-403a-96d7-3976e5dc74ed',
'created_at': '2024-01-01T00:00:00Z'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});