{
  "id": "deviceinfo",
  "name": "Device Info",
  "description": "Source-linked operating-system, kernel, browser, and Apple hardware intelligence covering release chronology, build and installability variants, observed lifecycle state, hardware identifier resolution, evidence-based compatibility, and best-effort request discovery.",
  "kind": "api",
  "audience": "public",
  "access": "open",
  "auth": "No authentication is required for documented public read operations; agent state, proposal review, pipeline mutation, and import routes are private and gated by an administrative key.",
  "lifecycle": "active",
  "health": "operational",
  "canonicalUrl": "https://deviceinfo.datasourceapi.com",
  "aliases": [],
  "docsUrl": "https://deviceinfo.datasourceapi.com/docs/",
  "docsMediaType": "text/html",
  "openapiUrl": "https://deviceinfo.datasourceapi.com/openapi.yaml",
  "openapiMediaType": "text/yaml",
  "statusUrl": "https://deviceinfo.datasourceapi.com/api/v1/status",
  "statusMediaType": "application/json",
  "repository": "https://github.com/coopalliance/cca-deviceinfo",
  "governanceNote": "Discovery, user-agent, client-hint, and first-party fingerprint results are unverified and spoofable parsing output. They are never device attestation and must not be used as authentication, authorization, enrollment, management, or integrity evidence. Coverage is source-observed rather than complete: a supported state means a relevant vendor release was observed, not that every known vulnerability is fixed, and products without a public vendor history are never presented as complete. Facts proposed from semi-structured vendor pages by Workers AI are applied only after deterministic schema, date, identifier, and provenance validation, and community claims stay pending review. The service does not yet publish llms.txt or an RFC 9727 catalog, and its OpenAPI document omits operationId, so the operations recorded here are catalog-curated identifiers for verified public routes. Automated parsing and redistribution of vendor support pages may be restricted by site terms; the repository documents source boundaries and states that commercial deployment needs legal review.",
  "serviceBinding": {
    "supported": true,
    "description": "Approved fleet Workers can bind the service as DEVICEINFO and call the same /api/v1 routes and response envelopes. The published binding contract forbids forwarding cookies, authorization headers, client addresses, or arbitrary request headers, and permits only documented discovery fields."
  },
  "provenance": [
    {
      "name": "CCA Device Info repository contract",
      "description": "Routes, Wrangler configuration, custom domain, OpenAPI 3.1 document, service-binding contract, and agentic update policy verified at repository commit bd6950b71463ad4cd59bc873baf3182b1eab4ec7.",
      "url": "https://github.com/coopalliance/cca-deviceinfo/tree/bd6950b71463ad4cd59bc873baf3182b1eab4ec7"
    },
    {
      "name": "Live catalog and automation status",
      "description": "Public status verified 2026-09-08 reports 7 platforms, 82 operating-system releases, 135 hardware models, 33 software products, 58,788 software releases, 115,050 append-only release observations, 29 browser products, 11 configured automation sources with all healthy, a successful scheduled run, and 143 proposals pending review.",
      "url": "https://deviceinfo.datasourceapi.com/api/v1/status"
    },
    {
      "name": "Upstream source registry",
      "description": "The public source registry lists 64 upstream sources with per-source authority and last-success timestamps, including Apple developer, security, and model-identification pages, Chromium Dash, Mozilla, Microsoft lifecycle exports, and app-store listings.",
      "url": "https://deviceinfo.datasourceapi.com/api/v1/sources"
    },
    {
      "name": "Documented source boundaries",
      "description": "Records source-by-source scope, retention, attribution, and the explicit limits of vendor-derived lifecycle and hardware data.",
      "url": "https://github.com/coopalliance/cca-deviceinfo/blob/bd6950b71463ad4cd59bc873baf3182b1eab4ec7/docs/DATA_SOURCES.md"
    }
  ],
  "freshness": {
    "cadence": "A daily Cloudflare cron ensures the durable updater agent exists and the agent owns an idempotent six-hour refresh schedule; GitHub Actions run daily incremental and weekly full software-history reconciliation. The latest recorded agent run completed 2026-09-08 after checking 3 due sources, applying 76 of 86 proposals.",
    "lastVerified": "2026-09-08"
  },
  "capabilities": [
    "apple-hardware-models",
    "browser-release-history",
    "device-discovery",
    "hardware-identifier-resolution",
    "os-lifecycle",
    "os-release-history",
    "release-compatibility",
    "software-release-history"
  ],
  "examples": [
    {
      "label": "Service status",
      "description": "Inspect catalog coverage, source health, and the latest updater-agent run.",
      "method": "GET",
      "url": "https://deviceinfo.datasourceapi.com/api/v1/status"
    },
    {
      "label": "Current macOS releases",
      "description": "List the macOS releases currently observed as current patch trains.",
      "method": "GET",
      "url": "https://deviceinfo.datasourceapi.com/api/v1/os/releases?platform=macos&current=true"
    },
    {
      "label": "Resolve a hardware identifier",
      "description": "Resolve the Macmini9,1 hardware identifier to its marketing model and aliases.",
      "method": "GET",
      "url": "https://deviceinfo.datasourceapi.com/api/v1/hardware/models/Macmini9,1"
    },
    {
      "label": "Compatibility evidence",
      "description": "Check a macOS major version against one Apple hardware identifier and return null instead of guessing when authoritative evidence is missing.",
      "method": "GET",
      "url": "https://deviceinfo.datasourceapi.com/api/v1/compatibility?model=Macmini9,1&platform=macos&version=26"
    },
    {
      "label": "Browser release history",
      "description": "Read the newest recorded Firefox release from the generalized browser history.",
      "method": "GET",
      "url": "https://deviceinfo.datasourceapi.com/api/v1/browser/releases?product=firefox&limit=1"
    }
  ],
  "operations": [
    {
      "operationId": "describeDeviceInfoService",
      "summary": "Describe the service and endpoint map.",
      "method": "GET",
      "path": "/api/v1/"
    },
    {
      "operationId": "listPlatforms",
      "summary": "List operating-system platforms and current coverage.",
      "method": "GET",
      "path": "/api/v1/platforms"
    },
    {
      "operationId": "listSoftwareProducts",
      "summary": "List operating-system and browser products.",
      "method": "GET",
      "path": "/api/v1/software/products"
    },
    {
      "operationId": "listSoftwareReleases",
      "summary": "List generalized software release history.",
      "method": "GET",
      "path": "/api/v1/software/releases"
    },
    {
      "operationId": "getSoftwareReleaseVariants",
      "summary": "Get channel, platform, architecture, and build variants for one version.",
      "method": "GET",
      "path": "/api/v1/software/releases/{product}/{version}"
    },
    {
      "operationId": "getRelease",
      "summary": "Get one canonical release by stable UUID.",
      "method": "GET",
      "path": "/api/v1/releases/{uuid}"
    },
    {
      "operationId": "listBrowserReleases",
      "summary": "List browser release history.",
      "method": "GET",
      "path": "/api/v1/browser/releases"
    },
    {
      "operationId": "listOsReleases",
      "summary": "List operating-system releases.",
      "method": "GET",
      "path": "/api/v1/os/releases"
    },
    {
      "operationId": "getOsRelease",
      "summary": "Get one operating-system release and its build variants.",
      "method": "GET",
      "path": "/api/v1/os/releases/{platform}/{version}"
    },
    {
      "operationId": "listHardwareModels",
      "summary": "List hardware models and identifier aliases.",
      "method": "GET",
      "path": "/api/v1/hardware/models"
    },
    {
      "operationId": "getHardwareModel",
      "summary": "Resolve a model by UUID, catalog identifier, or hardware identifier.",
      "method": "GET",
      "path": "/api/v1/hardware/models/{identifier}"
    },
    {
      "operationId": "checkCompatibility",
      "summary": "Check an operating-system release against a hardware identifier.",
      "method": "GET",
      "path": "/api/v1/compatibility"
    },
    {
      "operationId": "discoverDevice",
      "summary": "Classify the current HTTP request without claiming device identity.",
      "method": "GET",
      "path": "/api/v1/discover"
    },
    {
      "operationId": "getFingerprintChallenge",
      "summary": "Issue a one-time first-party fingerprint collection challenge.",
      "method": "GET",
      "path": "/api/v1/fingerprint/challenge"
    },
    {
      "operationId": "listDeviceInfoSources",
      "summary": "List source provenance and freshness.",
      "method": "GET",
      "path": "/api/v1/sources"
    },
    {
      "operationId": "getDeviceInfoStatus",
      "summary": "Get catalog and automation health.",
      "method": "GET",
      "path": "/api/v1/status"
    }
  ],
  "agentReadiness": {
    "level": "partial",
    "score": 70,
    "summary": "A live OpenAPI 3.1 document, hosted documentation, a fleet response envelope, a published service-binding contract, and 16 verified public read operations exist. The document omits operationId, and llms.txt and RFC 9727 discovery are not published, so agents must treat the recorded operation identifiers as catalog-curated and discovery-assisted rather than upstream-authoritative."
  }
}