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.
Consider using our official catalog importer. It can be used to sync catalog data from sources like local files or GitHub and push them into the incident.io catalog without having to directly interact with our public API.
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": {
- "archived_at": "2021-08-17T14:28:57.801578Z",
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "abc123",
- "image_url": "abc123",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "abc123",
- "unavailable": false,
- "value": "abc123"
}
], - "value": {
- "catalog_entry": {
- "archived_at": "2021-08-17T14:28:57.801578Z",
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "abc123",
- "image_url": "abc123",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "abc123",
- "unavailable": false,
- "value": "abc123"
}
}
}, - "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"
}, - "categories": [
- "issue-tracker"
], - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "dynamic_resource_parameter": "abc123",
- "estimated_count": 7,
- "icon": "alert",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "last_synced_at": "2021-08-17T13:28:57.801578Z",
- "name": "Kubernetes Cluster",
- "ranked": true,
- "registry_type": "PagerDutyService",
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "backlink_attribute": "abc123",
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "path": [
- {
- "attribute_id": "abc123",
- "attribute_name": "abc123"
}
], - "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.
If you call this API with a payload where the external_id and catalog_type_id match an existing entry, the existing entry will be updated.
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": {
- "archived_at": "2021-08-17T14:28:57.801578Z",
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "abc123",
- "image_url": "abc123",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "abc123",
- "unavailable": false,
- "value": "abc123"
}
], - "value": {
- "catalog_entry": {
- "archived_at": "2021-08-17T14:28:57.801578Z",
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "abc123",
- "image_url": "abc123",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "abc123",
- "unavailable": false,
- "value": "abc123"
}
}
}, - "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": {
- "archived_at": "2021-08-17T14:28:57.801578Z",
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "abc123",
- "image_url": "abc123",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "abc123",
- "unavailable": false,
- "value": "abc123"
}
], - "value": {
- "catalog_entry": {
- "archived_at": "2021-08-17T14:28:57.801578Z",
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "abc123",
- "image_url": "abc123",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "abc123",
- "unavailable": false,
- "value": "abc123"
}
}
}, - "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"
}, - "categories": [
- "issue-tracker"
], - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "dynamic_resource_parameter": "abc123",
- "estimated_count": 7,
- "icon": "alert",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "last_synced_at": "2021-08-17T13:28:57.801578Z",
- "name": "Kubernetes Cluster",
- "ranked": true,
- "registry_type": "PagerDutyService",
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "backlink_attribute": "abc123",
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "path": [
- {
- "attribute_id": "abc123",
- "attribute_name": "abc123"
}
], - "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": {
- "archived_at": "2021-08-17T14:28:57.801578Z",
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "abc123",
- "image_url": "abc123",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "abc123",
- "unavailable": false,
- "value": "abc123"
}
], - "value": {
- "catalog_entry": {
- "archived_at": "2021-08-17T14:28:57.801578Z",
- "catalog_entry_id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "catalog_entry_name": "Primary escalation",
- "catalog_type_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "helptext": "abc123",
- "image_url": "abc123",
- "is_image_slack_icon": false,
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity",
- "sort_key": "abc123",
- "unavailable": false,
- "value": "abc123"
}
}
}, - "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"
}, - "categories": [
- "issue-tracker"
], - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "dynamic_resource_parameter": "abc123",
- "estimated_count": 7,
- "icon": "alert",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "last_synced_at": "2021-08-17T13:28:57.801578Z",
- "name": "Kubernetes Cluster",
- "ranked": true,
- "registry_type": "PagerDutyService",
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "backlink_attribute": "abc123",
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "path": [
- {
- "attribute_id": "abc123",
- "attribute_name": "abc123"
}
], - "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"
}, - "categories": [
- "issue-tracker"
], - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "dynamic_resource_parameter": "abc123",
- "estimated_count": 7,
- "icon": "alert",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "last_synced_at": "2021-08-17T13:28:57.801578Z",
- "name": "Kubernetes Cluster",
- "ranked": true,
- "registry_type": "PagerDutyService",
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "backlink_attribute": "abc123",
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "path": [
- {
- "attribute_id": "abc123",
- "attribute_name": "abc123"
}
], - "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"
}, - "categories": [
- "issue-tracker"
], - "color": "yellow",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "icon": "alert",
- "name": "Kubernetes Cluster",
- "ranked": true,
- "type_name": "Custom[\"BackstageGroup\"]"
}
{- "catalog_type": {
- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "categories": [
- "issue-tracker"
], - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "dynamic_resource_parameter": "abc123",
- "estimated_count": 7,
- "icon": "alert",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "last_synced_at": "2021-08-17T13:28:57.801578Z",
- "name": "Kubernetes Cluster",
- "ranked": true,
- "registry_type": "PagerDutyService",
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "backlink_attribute": "abc123",
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "path": [
- {
- "attribute_id": "abc123",
- "attribute_name": "abc123"
}
], - "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"
}, - "categories": [
- "issue-tracker"
], - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "dynamic_resource_parameter": "abc123",
- "estimated_count": 7,
- "icon": "alert",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "last_synced_at": "2021-08-17T13:28:57.801578Z",
- "name": "Kubernetes Cluster",
- "ranked": true,
- "registry_type": "PagerDutyService",
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "backlink_attribute": "abc123",
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "path": [
- {
- "attribute_id": "abc123",
- "attribute_name": "abc123"
}
], - "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"
}, - "categories": [
- "issue-tracker"
], - "color": "yellow",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "icon": "alert",
- "name": "Kubernetes Cluster",
- "ranked": true,
}
{- "catalog_type": {
- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "categories": [
- "issue-tracker"
], - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "dynamic_resource_parameter": "abc123",
- "estimated_count": 7,
- "icon": "alert",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "last_synced_at": "2021-08-17T13:28:57.801578Z",
- "name": "Kubernetes Cluster",
- "ranked": true,
- "registry_type": "PagerDutyService",
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "backlink_attribute": "abc123",
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "path": [
- {
- "attribute_id": "abc123",
- "attribute_name": "abc123"
}
], - "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 relies 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,
- "backlink_attribute": "abc123",
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "path": [
- {
- "attribute_id": "abc123"
}
], - "type": "Custom[\"Service\"]"
}
], - "version": 1
}
{- "catalog_type": {
- "annotations": {
- "incident.io/catalog-importer/id": "id-of-config"
}, - "categories": [
- "issue-tracker"
], - "color": "yellow",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "description": "Represents Kubernetes clusters that we run inside of GKE.",
- "dynamic_resource_parameter": "abc123",
- "estimated_count": 7,
- "icon": "alert",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "is_editable": false,
- "last_synced_at": "2021-08-17T13:28:57.801578Z",
- "name": "Kubernetes Cluster",
- "ranked": true,
- "registry_type": "PagerDutyService",
- "required_integrations": [
- "pager_duty"
], - "schema": {
- "attributes": [
- {
- "array": false,
- "backlink_attribute": "abc123",
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "mode": "manual",
- "name": "tier",
- "path": [
- {
- "attribute_id": "abc123",
- "attribute_name": "abc123"
}
], - "type": "Custom[\"Service\"]"
}
], - "version": 1
}, - "semantic_type": "custom",
- "type_name": "Custom[\"BackstageGroup\"]",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
}