DocsRegistry Format

Registry Format

Canonical, cache-friendly JSON under /registry/v1/. No authentication. The read-only API at /api/v1/ is a convenience layer over the same store.

CORS is open (Access-Control-Allow-Origin: *). Responses carry ETag: "rev-N" and Last-Modified where a timestamp exists, and support If-None-Match / If-Modified-Since.

Endpoints

URL Purpose
/registry/v1/meta.json Schema version, revision, generatedAt, counts
/registry/v1/revision.json Same payload as meta (compat)
/registry/v1/index.json Compact listing of every record
/registry/v1/apps/{id} Full normalized record
/registry/v1/apps/{id}.json Same record
/registry/v1/categories.json Known categories and ACTIVE counts
/registry/v1/categories/{category}.json ACTIVE apps in that category
/registry/v1/status/{active|degraded|removed}.json Apps in that status
/registry/v1/changes.json?since=N Net added / updated / removed ids
/registry/v1/revisions/{n}.json Single-revision snapshot
/registry/v1/search.json?q= Name and domain search

{id} is the hostname, lowercased (for example squoosh.app).

Convenience API (same data): /api/v1/meta, /api/v1/apps, /api/v1/apps/{id}, /api/v1/search, /api/v1/changes, /api/v1/categories. See Using PWARegistry.

Index shape

{
  "spec": "https://pwaregistry.org/docs/registry-format",
  "version": 1,
  "revision": 12,
  "generatedAt": "2026-08-31T00:00:00.000Z",
  "counts": { "active": 10, "degraded": 1, "removed": 1, "total": 12 },
  "apps": [
    {
      "id": "example.com",
      "status": "ACTIVE",
      "name": "Example",
      "domain": "example.com",
      "updatedAt": "2026-08-31T00:00:00.000Z",
      "path": "/registry/v1/apps/example.com",
      "categories": ["utilities"]
    }
  ]
}

Record shape

A record includes status, timestamps, manifestUrl, factual capabilities, a normalized application object (identity, icons including primary / all, screenshots split by narrow / wide / unspecified / platformSpecific, categories), and the last validation summary. See Using PWARegistry for the full schema and consumer examples.

version is the format version (currently 1). revision is the dataset counter and increases whenever records are added, updated, or removed.