npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@rawdash/connector-statuspage

v0.26.0

Published

Rawdash connector for Atlassian Statuspage - components, incidents, and incident updates

Readme

@rawdash/connector-statuspage

npm version license

Sync Atlassian Statuspage components, incidents, and incident updates - current component health, recent incident history, and per-update status transitions.

Install

npm install @rawdash/connector-statuspage

Authentication

A Statuspage REST API key is required. Keys are scoped to the issuing account and inherit that account read access; a read-only role is sufficient for the resources synced here.

  1. Open Statuspage -> Manage Account -> API Info.
  2. Copy the API Key (or generate one if none exists).
  3. Store the key as a secret and reference it from the connector config as apiKey: secret("STATUSPAGE_API_KEY").
  4. Set pageId to your 12-character Page ID (shown on the same screen, e.g. abc123def456).

Configuration

| Field | Type | Required | Description | | ---------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | apiKey | secret | Yes | Statuspage REST API key. Create one at Manage Account -> API Info -> API Key. | | pageId | string | Yes | Statuspage page id (the 12-character identifier shown next to your page name in Manage Account -> API Info, also visible in the admin URL). | | resources | array | No | Which Statuspage resources to sync. Omit to sync all of them. 'incident_updates' rides the 'incidents' phase - enabling it without 'incidents' still fetches incidents but skips writing incident entities. | | incidentLookbackDays | number | No | How many days back to fetch incidents (and their updates) on a full sync. Defaults to 90. Statuspage returns incidents newest-first; this caps the backfill window. |

Resources

  • statuspage_component (entity) - Statuspage components (the things on a status page that turn red), with current status, group membership, and whether they are hidden until degraded.
    • Endpoint: GET /v1/pages/{page_id}/components
    • name: Component display name.
    • status: Current health: operational | under_maintenance | degraded_performance | partial_outage | major_outage.
    • groupId: Parent component-group id, or null if the component is top-level.
    • group: True if this row is itself a component group.
    • showcase: Whether the component is shown on the public page.
    • onlyShowIfDegraded: When true the component is hidden on the public page while operational.
    • position: Sort position within the page or group.
  • statuspage_incident (entity) - Statuspage incidents (realtime outages plus maintenance windows) with status, impact, affected components, and the created / monitoring / resolved timestamps.
    • Endpoint: GET /v1/pages/{page_id}/incidents
    • Returned newest-first by updated_at; bounded by the incident lookback window (default 90 days) and tightened to options.since on incremental syncs.
    • name: Incident title.
    • status: Realtime status (investigating | identified | monitoring | resolved | postmortem) or maintenance status (scheduled | in_progress | verifying | completed).
    • impact: Reported impact: none | maintenance | minor | major | critical.
    • componentIds: Ids of components currently attached to the incident.
    • createdAt: Incident creation timestamp (epoch ms).
    • resolvedAt: Resolved timestamp (epoch ms), or null while the incident is open.
    • shortlink: Public-facing short URL for the incident.
  • statuspage_incident_update (event) - Per-update transitions inside an incident timeline (each comment / status flip). Emitted at display_at (falling back to created_at).
    • Endpoint: GET /v1/pages/{page_id}/incidents
    • Derived from the inline incident_updates array on each incident; Statuspage does not expose a separate list endpoint.
    • updateId: Incident-update id.
    • incidentId: Parent incident id.
    • status: Status the incident moved to at this update.
    • body: Free-form message posted on the update.

Example

import {
  defineConfig,
  defineDashboard,
  defineMetric,
  secret,
} from '@rawdash/core';

const statuspage = {
  name: 'statuspage',
  connectorId: 'statuspage',
  config: {
    apiKey: secret('STATUSPAGE_API_KEY'),
    pageId: 'abc123def456',
  },
};

export default defineConfig({
  connectors: [statuspage],
  dashboards: {
    engineering: defineDashboard({
      widgets: {
        open_incidents: {
          kind: 'stat',
          title: 'Open incidents',
          metric: defineMetric({
            connector: statuspage,
            shape: 'entity',
            entityType: 'statuspage_incident',
            fn: 'count',
            filter: [{ field: 'status', op: 'neq', value: 'resolved' }],
          }),
        },
      },
    }),
  },
});

Rate limits

Statuspage rate-limits at roughly 1 request/second per page; this connector paginates sequentially and respects 429 Retry-After. The page size is 100.

Limitations

  • Better Stack Uptime is a separate package and is tracked as a follow-up.
  • Postmortem bodies, subscribers, metrics-provider configs, and template management are out of scope.
  • Component groups are exposed via each component group_id but are not synced as separate entities.

Links

License

Apache-2.0