Examples
To view and test the integration's mapping against examples of the third-party API responses, use the jq playground in your data sources page. Find the integration in the list of data sources and click on it to open the playground.
Pageโ
Page blueprint (Click to expand)
{
  "identifier": "statuspage",
  "title": "Status Page",
  "description": "A Statuspage for communicating service status and incidents.",
  "schema": {
    "properties": {
      "page_description": {
        "type": "string",
        "title": "Page Description",
        "description": "Description of the page (optional)."
      },
      "headline": {
        "type": "string",
        "title": "Headline",
        "description": "A short headline for the Statuspage (optional)."
      },
      "branding": {
        "type": "string",
        "title": "Branding",
        "description": "Branding level of the Statuspage (e.g., 'basic')."
      },
      "status_indicator": {
        "type": "string",
        "title": "Status Indicator",
        "enum": ["none", "minor", "major", "critical"],
        "enumColors": {
          "none": "green",
          "minor": "yellow",
          "major": "orange",
          "critical": "red"
        },
        "description": "The current status of the page."
      },
      "status_description": {
        "type": "string",
        "title": "Status Description",
        "description": "Description of the current status (optional)."
      },
      "subdomain": {
        "type": "string",
        "title": "Subdomain",
        "description": "The subdomain used for the Statuspage URL (e.g., 'appcellon')."
      },
      "domain": {
        "type": "string",
        "title": "Custom Domain",
        "description": "Custom domain name for the Statuspage (optional)."
      },
      "url": {
        "type": "string",
        "format": "url",
        "title": "Statuspage URL",
        "description": "Full URL of the Statuspage (optional)."
      },
      "allow_page_subscribers": {
        "type": "boolean",
        "title": "Allow Page Subscribers",
        "description": "Whether to allow users to subscribe to page updates."
      },
      "allow_incident_subscribers": {
        "type": "boolean",
        "title": "Allow Incident Subscribers",
        "description": "Whether to allow users to subscribe to specific incidents."
      },
      "allow_email_subscribers": {
        "type": "boolean",
        "title": "Allow Email Subscribers",
        "description": "Whether to allow email subscriptions."
      },
      "allow_sms_subscribers": {
        "type": "boolean",
        "title": "Allow SMS Subscribers",
        "description": "Whether to allow SMS subscriptions."
      },
      "allow_rss_atom_feeds": {
        "type": "boolean",
        "title": "Allow RSS/Atom Feeds",
        "description": "Whether to allow RSS or Atom feeds."
      },
      "allow_webhook_subscribers": {
        "type": "boolean",
        "title": "Allow Webhook Subscribers",
        "description": "Whether to allow webhook subscriptions."
      },
      "time_zone": {
        "type": "string",
        "title": "Time Zone",
        "description": "The time zone used for the Statuspage."
      },
      "createdAt": {
        "type": "string",
        "format": "date-time",
        "title": "Created At",
        "description": "When the Statuspage was created."
      },
      "updatedAt": {
        "type": "string",
        "format": "date-time",
        "title": "Last Updated At",
        "description": "When the Statuspage was last updated."
      }
    }
  },
  "calculationProperties": {},
  "aggregationProperties": {
    "criticalOpenIssues": {
      "title": "Services with Degraded Performance",
      "type": "number",
      "target": "statuspageComponent",
      "query": {
        "combinator": "and",
        "rules": [
          {
            "property": "status",
            "operator": "=",
            "value": "degraded_performance"
          }
        ]
      },
      "calculationSpec": {
        "calculationBy": "entities",
        "func": "count"
      }
    }
  }
}
Integration configuration (Click to expand)
createMissingRelatedEntities: true
deleteDependentEntities: true
resources:
  - kind: statuspage
    selector:
      query: "true"
    port:
      entity:
        mappings:
          identifier: .id
          title: .name
          blueprint: '"statuspage"'
          properties:
            page_description: .page_description
            headline: .headline
            branding: .branding
            status_indicator: .status_indicator
            status_description: .status_description
            subdomain: .subdomain
            domain: .domain
            url: .url
            allow_page_subscribers: .allow_page_subscribers
            allow_incident_subscribers: .allow_incident_subscribers
            allow_email_subscribers: .allow_email_subscribers
            allow_sms_subscribers: .allow_sms_subscribers
            allow_rss_atom_feeds: .allow_rss_atom_feeds
            allow_webhook_subscribers: .allow_webhook_subscribers
            time_zone: .time_zone
            createdAt: .created_at
            updatedAt: .updated_at
Component Groupโ
Component Group blueprint (Click to expand)
{
  "identifier": "statuspageComponentGroup",
  "title": "Statuspage Component Group",
  "description": "A group of related components on a Statuspage.",
  "schema": {
    "properties": {
      "description": {
        "type": "string",
        "title": "Description",
        "description": "Description of the group (optional)."
      },
      "position": {
        "type": "number",
        "title": "Position",
        "description": "Order of the group on the Statuspage."
      },
      "createdAt": {
        "type": "string",
        "format": "date-time",
        "title": "Created At",
        "description": "When the group was created."
      },
      "updatedAt": {
        "type": "string",
        "format": "date-time",
        "title": "Last Updated At",
        "description": "When the group was last updated."
      }
    }
  },
  "calculationProperties": {},
  "relations": {
    "statuspage": {
      "target": "statuspage",
      "required": false,
      "title": "Status Page",
      "many": false
    }
  }
}
Integration configuration (Click to expand)
createMissingRelatedEntities: true
deleteDependentEntities: true
resources:
  - kind: component_group
    selector:
      query: "true"
    port:
      entity:
        mappings:
          identifier: .id
          title: .name
          blueprint: '"statuspageComponentGroup"'
          properties:
            description: .description
            position: .position
            createdAt: .created_at
            updatedAt: .updated_at
          relations:
            statuspage: .page_id
Componentโ
Component blueprint (Click to expand)
{
  "identifier": "statuspageComponent",
  "title": "Statuspage Component",
  "icon": "Box",
  "description": "A component representing a specific part of a system or service on a Statuspage.",
  "schema": {
    "properties": {
      "description": {
        "type": "string",
        "title": "Description",
        "description": "Description of the component (optional)."
      },
      "status": {
        "type": "string",
        "title": "Current Status",
        "enum": [
          "operational",
          "degraded_performance",
          "partial_outage",
          "major_outage"
        ],
        "enumColors": {
          "operational": "green",
          "degraded_performance": "yellow",
          "partial_outage": "orange",
          "major_outage": "red"
        },
        "description": "The operational status of the component."
      },
      "position": {
        "type": "number",
        "title": "Position",
        "description": "Order of the component within its group."
      },
      "showcase": {
        "type": "boolean",
        "title": "Showcase",
        "description": "Whether to display the component prominently."
      },
      "only_show_if_degraded": {
        "type": "boolean",
        "title": "Only Show If Degraded",
        "description": "Whether to display the component only when degraded."
      },
      "startDate": {
        "type": "string",
        "format": "date-time",
        "title": "Start Date",
        "description": "The date when the component tracking started."
      },
      "createdAt": {
        "type": "string",
        "format": "date-time",
        "title": "Created At",
        "description": "When the component was created."
      },
      "updatedAt": {
        "type": "string",
        "format": "date-time",
        "title": "Last Updated At",
        "description": "When the component was last updated."
      }
    }
  },
  "calculationProperties": {},
  "relations": {
    "componentGroup": {
      "target": "statuspageComponentGroup",
      "required": false,
      "title": "Component Group",
      "many": false
    },
    "statuspage": {
      "target": "statuspage",
      "required": false,
      "title": "Status Page",
      "many": false
    }
  }
}
Integration configuration (Click to expand)
createMissingRelatedEntities: true
deleteDependentEntities: true
resources:
  - kind: component
    selector:
      query: ".group == false"
    port:
      entity:
        mappings:
          identifier: .id
          title: .name
          blueprint: '"statuspageComponent"'
          properties:
            description: .description
            position: .position
            status: .status
            showcase: .showcase
            only_show_if_degraded: .only_show_if_degraded
            startDate: '.start_date | if . == null then null else (strptime("%Y-%m-%d") | todateiso8601) end'
            createdAt: .created_at
            updatedAt: .updated_at
          relations:
            componentGroup: .group_id
            statuspage: .page_id
Incidentโ
Incident blueprint (Click to expand)
{
  "identifier": "statuspageIncident",
  "title": "Statuspage Incident",
  "icon": "Alert",
  "description": "An incident reported on a Statuspage.",
  "schema": {
    "properties": {
      "status": {
        "type": "string",
        "title": "Current Status",
        "enum": [
          "investigating",
          "identified",
          "monitoring",
          "resolved",
          "postmortem",
          "scheduled",
          "in_progress",
          "verifying",
          "completed"
        ],
        "enumColors": {
          "investigating": "blue",
          "identified": "orange",
          "monitoring": "yellow",
          "resolved": "green",
          "postmortem": "purple",
          "scheduled": "lightGray",
          "in_progress": "blue",
          "verifying": "yellow",
          "completed": "green"
        },
        "description": "Current status of the incident."
      },
      "impact": {
        "type": "string",
        "title": "Impact",
        "enum": ["none", "minor", "major", "critical"],
        "enumColors": {
          "none": "green",
          "minor": "yellow",
          "major": "orange",
          "critical": "red"
        },
        "description": "The impact level of the incident."
      },
      "createdAt": {
        "type": "string",
        "format": "date-time",
        "title": "Created At",
        "description": "When the incident was first reported."
      },
      "updatedAt": {
        "type": "string",
        "format": "date-time",
        "title": "Last Updated At",
        "description": "When the incident was last updated."
      },
      "startedAt": {
        "type": "string",
        "format": "date-time",
        "title": "Started At",
        "description": "When the incident actually began."
      },
      "resolvedAt": {
        "type": "string",
        "format": "date-time",
        "title": "Resolved At",
        "description": "When the incident was resolved (null if ongoing)."
      },
      "shortlink": {
        "type": "string",
        "format": "url",
        "title": "Short Link",
        "description": "A shortened URL for sharing the incident status page."
      },
      "postmortemPublishedAt": {
        "type": "string",
        "format": "date-time",
        "title": "Postmortem Published At",
        "description": "When the postmortem analysis was published (null if not yet published)."
      },
      "scheduled_for": {
        "type": "string",
        "format": "date-time",
        "title": "Scheduled For",
        "description": "Start time for a scheduled incident (null if not scheduled)."
      },
      "scheduled_until": {
        "type": "string",
        "format": "date-time",
        "title": "Scheduled Until",
        "description": "End time for a scheduled incident (null if not scheduled)."
      },
      "scheduled_remind_prior": {
        "type": "boolean",
        "title": "Scheduled Remind Prior",
        "description": "Whether to send a reminder before a scheduled incident."
      },
      "scheduled_reminded_at": {
        "type": "string",
        "format": "date-time",
        "title": "Scheduled Reminded At",
        "description": "When the reminder for a scheduled incident was sent (null if not applicable)."
      },
      "scheduled_auto_in_progress": {
        "type": "boolean",
        "title": "Scheduled Auto In Progress",
        "description": "Whether to automatically transition the incident to 'in progress'."
      },
      "scheduled_auto_completed": {
        "type": "boolean",
        "title": "Scheduled Auto Completed",
        "description": "Whether to automatically mark the incident as completed."
      },
      "metadata": {
        "type": "object",
        "title": "Metadata",
        "description": "Custom metadata associated with the incident."
      },
      "reminder_intervals": {
        "type": "string",
        "title": "Reminder Intervals",
        "description": "Intervals for sending reminders for a scheduled incident (null if not applicable)."
      },
      "postmortem_body": {
        "type": "string",
        "format": "markdown",
        "title": "Postmortem",
        "description": "The content of the postmortem analysis."
      },
      "postmortem_body_last_updated_at": {
        "type": "string",
        "format": "date-time",
        "title": "Postmortem Last Updated At",
        "description": "When the postmortem body was last updated (null if not applicable)."
      },
      "postmortem_ignored": {
        "type": "boolean",
        "title": "Postmortem Ignored",
        "description": "Whether the postmortem has been ignored."
      },
      "postmortem_published_at": {
        "type": "string",
        "format": "date-time",
        "title": "Postmortem Published At",
        "description": "When the postmortem was published (null if not yet published)."
      },
      "postmortem_notified_subscribers": {
        "type": "boolean",
        "title": "Postmortem Notified Subscribers",
        "description": "Whether subscribers were notified about the postmortem."
      },
      "postmortem_notified_twitter": {
        "type": "boolean",
        "title": "Postmortem Notified Twitter",
        "description": "Whether the postmortem was announced on Twitter."
      }
    }
  },
  "calculationProperties": {
    "category": {
      "title": "Category",
      "description": "Category of Incident",
      "calculation": ".properties | .status as $status | if ($status | IN(\"scheduled\", \"in_progress\", \"verifying\", \"completed\")) then \"maintenance\" else \"incident\" end",
      "type": "string",
      "colorized": true,
      "colors": {
        "maintenance": "bronze",
        "incident": "red"
      }
    }
  },
  "relations": {
    "components": {
      "target": "statuspageComponent",
      "required": false,
      "title": "Affected Components",
      "many": true
    },
    "statuspage": {
      "target": "statuspage",
      "required": false,
      "title": "Status Page",
      "many": false
    }
  }
}
Integration configuration (Click to expand)
createMissingRelatedEntities: true
deleteDependentEntities: true
resources:
  - kind: incident
    selector:
      query: "true"
    port:
      entity:
        mappings:
          identifier: .id
          title: .name
          blueprint: '"statuspageIncident"'
          properties:
            status: .status
            impact: .impact
            createdAt: .created_at
            updatedAt: .updated_at
            startedAt: .started_at
            resolvedAt: .resolved_at
            shortlink: .shortlink
            scheduled_for: .scheduled_for
            scheduled_until: .scheduled_until
            scheduled_remind_prior: .scheduled_remind_prior
            scheduled_reminded_at: .scheduled_reminded_at
            impact_override: .impact_override
            scheduled_auto_in_progress: .scheduled_auto_in_progress
            scheduled_auto_completed: .scheduled_auto_completed
            metadata: .metadata
            reminder_intervals: .reminder_intervals
            postmortem_body: .postmortem_body
            postmortem_body_last_updated_at: .postmortem_body_last_updated_at
            postmortem_ignored: .postmortem_ignored
            postmortem_published_at: .postmortem_published_at
            postmortem_notified_subscribers: .postmortem_notified_subscribers
            postmortem_notified_twitter: .postmortem_notified_twitter
          relations:
            components: "[.components[].id]"
            statuspage: .page_id
Incident Updateโ
Incident Update blueprint (Click to expand)
{
  "identifier": "statuspageIncidentUpdate",
  "title": "Statuspage Incident Update",
  "icon": "Alert",
  "description": "An update to a Statuspage incident.",
  "schema": {
    "properties": {
      "status": {
        "type": "string",
        "title": "Update Status",
        "enum": [
          "investigating",
          "identified",
          "monitoring",
          "resolved",
          "postmortem",
          "scheduled",
          "in_progress",
          "verifying",
          "completed"
        ],
        "enumColors": {
          "investigating": "blue",
          "identified": "orange",
          "monitoring": "yellow",
          "resolved": "green",
          "postmortem": "purple",
          "scheduled": "lightGray",
          "in_progress": "blue",
          "verifying": "yellow",
          "completed": "green"
        },
        "description": "The status of the incident at the time of the update."
      },
      "body": {
        "type": "string",
        "title": "Update",
        "description": "The message content of the update."
      },
      "createdAt": {
        "type": "string",
        "format": "date-time",
        "title": "Created At",
        "description": "When the update was created."
      },
      "displayAt": {
        "type": "string",
        "format": "date-time",
        "title": "Display At",
        "description": "When the update was displayed on the Statuspage."
      },
      "deliverNotifications": {
        "type": "boolean",
        "title": "Deliver Notifications",
        "description": "Whether notifications were sent for this update."
      },
      "wantsTwitterUpdate": {
        "type": "boolean",
        "title": "Wants Twitter Update",
        "description": "Whether a Twitter update was requested."
      },
      "tweet_id": {
        "type": "string",
        "title": "Tweet ID",
        "description": "The ID of the tweet associated with this update (if any)."
      },
      "custom_tweet": {
        "type": "string",
        "title": "Custom Tweet",
        "description": "The custom text used for the tweet (if applicable)."
      }
    }
  },
  "calculationProperties": {
    "category": {
      "title": "Category",
      "description": "Category of Incident",
      "calculation": ".properties | .status as $status | if ($status | IN(\"scheduled\", \"in_progress\", \"verifying\", \"completed\")) then \"maintenance\" else \"incident\" end",
      "type": "string",
      "colorized": true,
      "colors": {
        "maintenance": "bronze",
        "incident": "red"
      }
    }
  },
  "relations": {
    "incident": {
      "target": "statuspageIncident",
      "required": true,
      "title": "Incident",
      "many": false
    },
    "affectedComponents": {
      "target": "statuspageComponent",
      "required": false,
      "title": "Affected Components",
      "many": true
    }
  }
}
Integration configuration (Click to expand)
createMissingRelatedEntities: true
deleteDependentEntities: true
resources:
  - kind: incident_update
    selector:
      query: "true"
    port:
      entity:
        mappings:
          identifier: .id
          title: .body
          blueprint: '"statuspageIncidentUpdate"'
          properties:
            status: .status
            body: .body
            createdAt: .created_at
            displayAt: .display_at
            deliverNotifications: .deliver_notifications
            wantsTwitterUpdate: .wants_twitter_update
            tweet_id: .tweet_id
            custom_tweet: .custom_tweet
          relations:
            incident: .incident_id
            affectedComponents: "[.affected_components[].code]"