{
  "openapi": "3.1.0",
  "info": {
    "title": "Status Boards API",
    "version": "0.5.0",
    "description": "Canonical API for status page, incident, service, availability, and source data from public status board vendors. Anonymous access is rate-limited; verified email API keys use higher standard Blue Door RPS/RPM limits."
  },
  "servers": [
    {
      "url": "https://api.bluedoor.sh/status-pages"
    },
    {
      "url": "http://0.0.0.0:8080"
    }
  ],
  "paths": {
    "/health": {
      "get": {
        "summary": "Health check"
      }
    },
    "/openapi.json": {
      "get": {
        "summary": "OpenAPI document"
      }
    },
    "/v1/meta": {
      "get": {
        "summary": "Dataset metadata and aggregate counts"
      }
    },
    "/v1/usage": {
      "get": {
        "summary": "Current caller identity and rate-limit state"
      }
    },
    "/v1/auth/otp": {
      "post": {
        "summary": "Request an email verification code for a free API key",
        "responses": {
          "202": {
            "description": "Verification code accepted for delivery"
          },
          "503": {
            "description": "Email delivery is not configured"
          }
        }
      }
    },
    "/v1/auth/verify": {
      "post": {
        "summary": "Verify an email code and mint a free API key",
        "responses": {
          "200": {
            "description": "API key minted"
          },
          "400": {
            "description": "Invalid or expired code"
          }
        }
      }
    },
    "/v1/auth/limits/requests": {
      "post": {
        "summary": "Request higher API rate limits",
        "responses": {
          "202": {
            "description": "Rate-limit request accepted"
          },
          "401": {
            "description": "Verified email API key required"
          }
        }
      }
    },
    "/v1/scorecard": {
      "get": {
        "summary": "Top-level API scorecard for dataset totals, provider readiness, data surfaces, discovery gaps, and top providers"
      }
    },
    "/v1/resolve": {
      "get": {
        "summary": "Resolve names, domains, URLs, and labels to stable API IDs"
      }
    },
    "/v1/compare/companies": {
      "get": {
        "summary": "Compare a bounded set of companies side by side by reliability, incidents, uptime, services, and coverage"
      }
    },
    "/v1/insights/customers": {
      "get": {
        "summary": "List normalized customer intelligence rows for diligence and prospecting with provider relationships, evidence quality, and data-depth scoring"
      }
    },
    "/v1/insights/customers/{company_id}": {
      "get": {
        "summary": "Read one company's customer intelligence row with provider relationship evidence and links"
      }
    },
    "/v1/insights/data-surfaces/companies": {
      "get": {
        "summary": "List company data-surface insight rows by observed capabilities, granularity tier, and analysis readiness"
      }
    },
    "/v1/insights/data-surfaces/companies/{company_id}": {
      "get": {
        "summary": "Read one company's data-surface insight row with provider-specific capability breakdown"
      }
    },
    "/v1/insights/data-surfaces/status-pages": {
      "get": {
        "summary": "List status-page data-surface insight rows by tenant configuration, exposed endpoints, and analysis readiness"
      }
    },
    "/v1/insights/data-surfaces/status-pages/{status_page_id}": {
      "get": {
        "summary": "Read one status page's data-surface insight row with tenant configuration and capability evidence"
      }
    },
    "/v1/insights/outages/companies": {
      "get": {
        "summary": "Rank companies by scoped outage intelligence from incident frequency, active issues, downtime, uptime, and recency"
      }
    },
    "/v1/insights/outages/services": {
      "get": {
        "summary": "Rank services/products by scoped outage intelligence from incident frequency, active issues, downtime, uptime, and recency"
      }
    },
    "/v1/coverage/providers": {
      "get": {
        "summary": "List provider-level discovery, data surface, and normalized coverage scorecards"
      }
    },
    "/v1/coverage/providers/{provider_id}": {
      "get": {
        "summary": "Read one provider's discovery, data surface, and normalized coverage scorecard"
      }
    },
    "/v1/coverage/companies": {
      "get": {
        "summary": "List company-level data-surface scorecards across status pages, services, incidents, updates, impacts, availability, and source endpoints"
      }
    },
    "/v1/coverage/companies/{id}": {
      "get": {
        "summary": "Read one company's data-surface scorecard"
      }
    },
    "/v1/coverage/providers/{provider_id}/discovery-gaps": {
      "get": {
        "summary": "Read confirmed-root discovery reconciliation for one provider"
      }
    },
    "/v1/coverage/discovery-gaps": {
      "get": {
        "summary": "List confirmed-root discovery reconciliation and remaining actionable gaps by provider"
      }
    },
    "/v1/coverage/discovery-gaps/{provider_id}": {
      "get": {
        "summary": "Read confirmed-root discovery reconciliation for one provider"
      }
    },
    "/v1/coverage/fields": {
      "get": {
        "summary": "List normalized field/data-surface coverage globally or by provider"
      }
    },
    "/v1/coverage/fields/{entity}": {
      "get": {
        "summary": "List normalized field/data-surface coverage for one entity globally or by provider"
      }
    },
    "/v1/reliability/companies": {
      "get": {
        "summary": "Rank companies by observed reliability, incident, uptime, and data coverage signals"
      }
    },
    "/v1/reliability/services": {
      "get": {
        "summary": "Rank services/products by observed reliability, incident, uptime, and current status signals"
      }
    },
    "/v1/companies": {
      "get": {
        "summary": "List companies with compact status and coverage summaries"
      }
    },
    "/v1/companies/{id}": {
      "get": {
        "summary": "Read one company summary"
      }
    },
    "/v1/companies/{id}/profile": {
      "get": {
        "summary": "Read one company profile with bounded embedded services, incidents, availability, coverage, and provenance"
      }
    },
    "/v1/companies/{id}/coverage": {
      "get": {
        "summary": "Read one company's data-surface scorecard"
      }
    },
    "/v1/companies/{id}/benchmarks": {
      "get": {
        "summary": "Benchmark one company against global and same-provider cohorts by reliability, incident, uptime, and coverage metrics"
      }
    },
    "/v1/companies/{id}/services": {
      "get": {
        "summary": "List services for one company"
      }
    },
    "/v1/companies/{id}/incidents": {
      "get": {
        "summary": "List incidents for one company"
      }
    },
    "/v1/companies/{id}/timeline": {
      "get": {
        "summary": "List one company's normalized incident and update timeline"
      }
    },
    "/v1/companies/{id}/availability": {
      "get": {
        "summary": "List availability windows for one company"
      }
    },
    "/v1/companies/{id}/sources": {
      "get": {
        "summary": "List source records for one company"
      }
    },
    "/v1/services": {
      "get": {
        "summary": "List services/components"
      }
    },
    "/v1/services/{id}": {
      "get": {
        "summary": "Read one service"
      }
    },
    "/v1/services/{id}/profile": {
      "get": {
        "summary": "Read one service/product profile with bounded embedded incidents, impacts, availability, reliability, and provenance"
      }
    },
    "/v1/services/{id}/benchmarks": {
      "get": {
        "summary": "Benchmark one service/product against global, provider, company, and source-page cohorts by reliability, incident, uptime, and coverage metrics"
      }
    },
    "/v1/services/{id}/incidents": {
      "get": {
        "summary": "List incidents for one service"
      }
    },
    "/v1/services/{id}/timeline": {
      "get": {
        "summary": "List one service/product's normalized incident and update timeline"
      }
    },
    "/v1/services/{id}/availability": {
      "get": {
        "summary": "List availability windows for one service"
      }
    },
    "/v1/incidents": {
      "get": {
        "summary": "List incidents and maintenance events"
      }
    },
    "/v1/incidents/{id}": {
      "get": {
        "summary": "Read one incident"
      }
    },
    "/v1/incidents/{id}/profile": {
      "get": {
        "summary": "Read one incident profile with updates, service impacts, affected services, lifecycle fields, and bounded timeline"
      }
    },
    "/v1/incidents/{id}/timeline": {
      "get": {
        "summary": "List one incident's normalized timeline across lifecycle, update, and service-impact events"
      }
    },
    "/v1/incidents/{id}/updates": {
      "get": {
        "summary": "List updates for one incident"
      }
    },
    "/v1/incidents/{id}/impacts": {
      "get": {
        "summary": "List service impacts for one incident"
      }
    },
    "/v1/availability": {
      "get": {
        "summary": "List availability windows"
      }
    },
    "/v1/metrics/incidents": {
      "get": {
        "summary": "Aggregate incident metrics"
      }
    },
    "/v1/metrics/availability": {
      "get": {
        "summary": "Aggregate availability metrics"
      }
    },
    "/v1/trends/incidents": {
      "get": {
        "summary": "Bucket incidents and maintenance by time period and optional dimensions"
      }
    },
    "/v1/trends/availability": {
      "get": {
        "summary": "Bucket availability, uptime, downtime, and maintenance windows by time period and optional dimensions"
      }
    },
    "/v1/events": {
      "get": {
        "summary": "Latest incident and update events"
      }
    },
    "/v1/sources": {
      "get": {
        "summary": "List observed source records"
      }
    },
    "/v1/sources/{id}": {
      "get": {
        "summary": "Read one observed source record"
      }
    },
    "/v1/webhooks": {
      "get": {
        "summary": "List webhook subscriptions for the current API key",
        "responses": {
          "200": {
            "description": "Webhook subscriptions"
          },
          "401": {
            "description": "Verified email API key required"
          }
        }
      },
      "post": {
        "summary": "Register for status-page change notifications",
        "responses": {
          "201": {
            "description": "Webhook subscription created"
          },
          "401": {
            "description": "Verified email API key required"
          }
        }
      }
    },
    "/v1/webhooks/{webhook_id}": {
      "delete": {
        "summary": "Disable a webhook subscription for the current API key",
        "responses": {
          "200": {
            "description": "Webhook subscription disabled"
          },
          "404": {
            "description": "Webhook subscription not found"
          }
        }
      }
    },
    "/v1/providers": {
      "get": {
        "summary": "Legacy/provider list"
      }
    },
    "/v1/providers/{provider_id}/customers": {
      "get": {
        "summary": "List one provider's customer companies with provider-scoped data surface, quality, and coverage signals"
      }
    },
    "/v1/providers/{provider_id}/customers/{company_id}": {
      "get": {
        "summary": "Read one provider/customer relationship with provider-scoped data surface and links"
      }
    },
    "/v1/providers/{provider_id}/coverage": {
      "get": {
        "summary": "Alias for one provider's coverage scorecard"
      }
    },
    "/v1/organizations": {
      "get": {
        "summary": "Legacy organization list"
      }
    },
    "/v1/status-pages": {
      "get": {
        "summary": "Legacy source page list"
      }
    },
    "/v1/status-pages/{id}": {
      "get": {
        "summary": "Read one source/status page"
      }
    },
    "/v1/status-pages/{id}/profile": {
      "get": {
        "summary": "Read one source/status page profile with page-level data surface, services, incidents, availability, and source endpoints"
      }
    },
    "/v1/status-pages/{id}/components": {
      "get": {
        "summary": "List services/components for one source/status page"
      }
    },
    "/v1/status-pages/{id}/incidents": {
      "get": {
        "summary": "List incidents for one source/status page"
      }
    },
    "/v1/status-pages/{id}/availability": {
      "get": {
        "summary": "List availability windows for one source/status page"
      }
    },
    "/v1/status-pages/{id}/sources": {
      "get": {
        "summary": "List source records for one source/status page"
      }
    },
    "/v1/components": {
      "get": {
        "summary": "Legacy component list"
      }
    },
    "/v1/uptime": {
      "get": {
        "summary": "Legacy uptime window list"
      }
    },
    "/v1/search": {
      "get": {
        "summary": "Search normalized companies, services, incidents, and source pages with linked result summaries and facets"
      }
    }
  }
}
