Manage and browse catalog resources.
Use the incident.io catalog to track services, teams, product features and anything else that helps build a map of your organisation. These different categories of thing become catalog types, and each instance (like a particular service or team) is a catalog entry.
Each type is made up of a series of attributes, and each attribute has a type. Types can even have attributes that refer to other catalog types.
We automatically create catalog types when you connect an integration, such as GitHub repositories or PagerDuty services and teams. You can use this API to create custom types, that are specifically tailored to your organisation.
Examples might be a 'Service' type with an 'Alert channel' which you can point at a Slack channel, or 'Team' which specifies its 'Manager' and 'Technical Lead' as Slack users. You can then use these types to create powerful new workflows.
List entries for a catalog type.
OK response.
{- "catalog_entries": [
- {
- "aliases": [
- "lawrence@incident.io",
- "lawrence"
], - "archived_at": "2021-08-17T14:28:57.801578Z",
- "attribute_values": {
- "abc123": {
- "array_value": [
- {
- "catalog_entry": {
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "Collection of standalone automations like auto-closing incidents.",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "000020",
- "unavailable": false
}
], - "value": {
- "catalog_entry": {
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "Collection of standalone automations like auto-closing incidents.",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "000020",
- "unavailable": false
}
}
}, - "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "external_id": "761722cd-d1d7-477b-ac7e-90f9e079dc33",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Primary On-call",
- "rank": 3,
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
], - "catalog_type": {
- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "estimated_count": 7,
- "external_type": "PagerDutyService",
- "icon": "bolt",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "name": "Kubernetes Cluster",
- "ranked": true,
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "type": "Custom[\"Service\"]"
}
], - "version": 1
}, - "semantic_type": "custom",
- "type_name": "Custom[\"BackstageGroup\"]",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}, - "pagination_meta": {
- "after": "01FCNDV6P870EA6S7TK1DSYDG0",
- "page_size": 25
}
}
Create an entry within the catalog. We support a maximum of 50,000 entries per type.
Created response.
{- "aliases": [
- "lawrence@incident.io",
- "lawrence"
], - "attribute_values": {
- "abc123": {
- "array_value": [
- {
- "literal": "SEV123",
- "reference": "incident.severity"
}
], - "value": {
- "literal": "SEV123",
- "reference": "incident.severity"
}
}
}, - "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "external_id": "761722cd-d1d7-477b-ac7e-90f9e079dc33",
- "name": "Primary On-call",
- "rank": 3
}
{- "catalog_entry": {
- "aliases": [
- "lawrence@incident.io",
- "lawrence"
], - "archived_at": "2021-08-17T14:28:57.801578Z",
- "attribute_values": {
- "abc123": {
- "array_value": [
- {
- "catalog_entry": {
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "Collection of standalone automations like auto-closing incidents.",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "000020",
- "unavailable": false
}
], - "value": {
- "catalog_entry": {
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "Collection of standalone automations like auto-closing incidents.",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "000020",
- "unavailable": false
}
}
}, - "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "external_id": "761722cd-d1d7-477b-ac7e-90f9e079dc33",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Primary On-call",
- "rank": 3,
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
}
{- "catalog_entry": {
- "aliases": [
- "lawrence@incident.io",
- "lawrence"
], - "archived_at": "2021-08-17T14:28:57.801578Z",
- "attribute_values": {
- "abc123": {
- "array_value": [
- {
- "catalog_entry": {
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "Collection of standalone automations like auto-closing incidents.",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "000020",
- "unavailable": false
}
], - "value": {
- "catalog_entry": {
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "Collection of standalone automations like auto-closing incidents.",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "000020",
- "unavailable": false
}
}
}, - "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "external_id": "761722cd-d1d7-477b-ac7e-90f9e079dc33",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Primary On-call",
- "rank": 3,
- "updated_at": "2021-08-17T13:28:57.801578Z"
}, - "catalog_type": {
- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "estimated_count": 7,
- "external_type": "PagerDutyService",
- "icon": "bolt",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "name": "Kubernetes Cluster",
- "ranked": true,
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "type": "Custom[\"Service\"]"
}
], - "version": 1
}, - "semantic_type": "custom",
- "type_name": "Custom[\"BackstageGroup\"]",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
}
Updates an existing catalog entry.
OK response.
{- "aliases": [
- "lawrence@incident.io",
- "lawrence"
], - "attribute_values": {
- "abc123": {
- "array_value": [
- {
- "literal": "SEV123",
- "reference": "incident.severity"
}
], - "value": {
- "literal": "SEV123",
- "reference": "incident.severity"
}
}
}, - "external_id": "761722cd-d1d7-477b-ac7e-90f9e079dc33",
- "name": "Primary On-call",
- "rank": 3
}
{- "catalog_entry": {
- "aliases": [
- "lawrence@incident.io",
- "lawrence"
], - "archived_at": "2021-08-17T14:28:57.801578Z",
- "attribute_values": {
- "abc123": {
- "array_value": [
- {
- "catalog_entry": {
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "Collection of standalone automations like auto-closing incidents.",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "000020",
- "unavailable": false
}
], - "value": {
- "catalog_entry": {
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "Collection of standalone automations like auto-closing incidents.",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "000020",
- "unavailable": false
}
}
}, - "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "external_id": "761722cd-d1d7-477b-ac7e-90f9e079dc33",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Primary On-call",
- "rank": 3,
- "updated_at": "2021-08-17T13:28:57.801578Z"
}, - "catalog_type": {
- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "estimated_count": 7,
- "external_type": "PagerDutyService",
- "icon": "bolt",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "name": "Kubernetes Cluster",
- "ranked": true,
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "type": "Custom[\"Service\"]"
}
], - "version": 1
}, - "semantic_type": "custom",
- "type_name": "Custom[\"BackstageGroup\"]",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
}
List available engine resources for the catalog.
A resource represents a type of data that can be held within the catalog, so this endpoint can be used to see what attribute types can be used when updating the schema of a catalog type.
OK response.
{- "resources": [
- {
- "category": "custom",
- "description": "Boolean true or false value",
- "label": "GitHub Repository",
- "type": "CatalogEntry[\"01GVGYJSD39FRKVDWACK9NDS4E\"]",
- "value_docstring": "Either the GraphQL node ID of the repository or a string of <owner>/<repo>, e.g. incident-io/website"
}
]
}
List all catalog types for an organisation, including those synced from external resources.
OK response.
{- "catalog_types": [
- {
- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "estimated_count": 7,
- "external_type": "PagerDutyService",
- "icon": "bolt",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "name": "Kubernetes Cluster",
- "ranked": true,
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "type": "Custom[\"Service\"]"
}
], - "version": 1
}, - "semantic_type": "custom",
- "type_name": "Custom[\"BackstageGroup\"]",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
]
}
Create a catalog type. The schema must be updated using the UpdateTypeSchema endpoint.
Created response.
{- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "color": "yellow",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "icon": "bolt",
- "name": "Kubernetes Cluster",
- "ranked": true,
- "type_name": "Custom[\"BackstageGroup\"]"
}
{- "catalog_type": {
- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "estimated_count": 7,
- "external_type": "PagerDutyService",
- "icon": "bolt",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "name": "Kubernetes Cluster",
- "ranked": true,
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "type": "Custom[\"Service\"]"
}
], - "version": 1
}, - "semantic_type": "custom",
- "type_name": "Custom[\"BackstageGroup\"]",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
}
{- "catalog_type": {
- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "estimated_count": 7,
- "external_type": "PagerDutyService",
- "icon": "bolt",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "name": "Kubernetes Cluster",
- "ranked": true,
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "type": "Custom[\"Service\"]"
}
], - "version": 1
}, - "semantic_type": "custom",
- "type_name": "Custom[\"BackstageGroup\"]",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
}
Updates an existing catalog type. The schema must be updated using the UpdateTypeSchema endpoint.
OK response.
{- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "color": "yellow",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "icon": "bolt",
- "name": "Kubernetes Cluster",
- "ranked": true
}
{- "catalog_type": {
- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "estimated_count": 7,
- "external_type": "PagerDutyService",
- "icon": "bolt",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "name": "Kubernetes Cluster",
- "ranked": true,
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "type": "Custom[\"Service\"]"
}
], - "version": 1
}, - "semantic_type": "custom",
- "type_name": "Custom[\"BackstageGroup\"]",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
}
Update an existing catalog types schema, adding or removing attributes.
Updating the schema is handled separately from creating and updating types, so that you don't have to worry about dependencies between types. For example, if type A has an attribute that replies on type B, you would have to create type B first.
By allowing the creation of types without a schema, they can be created in any order, but it means that you need to make a separate call to this endpoint to update the schema.
OK response.
{- "attributes": [
- {
- "array": false,
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "type": "Custom[\"Service\"]"
}
], - "version": 1
}
{- "catalog_type": {
- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "estimated_count": 7,
- "external_type": "PagerDutyService",
- "icon": "bolt",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "name": "Kubernetes Cluster",
- "ranked": true,
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "type": "Custom[\"Service\"]"
}
], - "version": 1
}, - "semantic_type": "custom",
- "type_name": "Custom[\"BackstageGroup\"]",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
}