Documentation
Aether Static publishes an HTML catalog for review and JSON metadata for release automation. The public site uses the same format it documents: the current catalog describes the files served by aetherstatic.com, while each release keeps an immutable manifest.
1, release [email protected]. All dates use ISO 8601 and all byte counts are integers.Quickstart
No client library is required. Fetch the catalog, verify the release identifier, and use each asset's publicUrl as the canonical path.
const response = await fetch("https://aetherstatic.com/catalog/index.json");
if (!response.ok) throw new Error(`Catalog request failed: ${response.status}`);
const catalog = await response.json();
if (catalog.schema !== 1) throw new Error("Unsupported catalog schema");
console.log(catalog.release, catalog.assets.length);
Manifest schema
The manifest should be small enough to inspect in a review and specific enough to support a release note.
{
"schema": 1,
"release": "[email protected]",
"published": "2026-07-09T16:20:00Z",
"source": "aetherstatic.com",
"assets": [
{
"file": "product.css",
"version": "2.2.0",
"type": "css",
"bytes": 56971,
"checksum": "69543c402c87",
"cache": "public, max-age=86400",
"publicUrl": "/assets/product.css"
}
]
}
Asset fields
filestringYesDisplay filename without the leading public path.versionstringYesRelease version that owns the asset row.typestringYesLowercase file family such as css, json, png, xml, or txt.bytesintegerYesUncompressed file size in bytes.checksumstringYesShortened SHA-256 reference used in the public review surface.cachestringYesIntended Cache-Control directive for the public path.publicUrlstringYesRoot-relative canonical path for the published file.Cache headers
Use short cache windows for generated metadata and longer windows for stable media or styles. Catalog values document intent; the response header from the hosting layer remains authoritative.
Cache-Control: public, max-age=600
Content-Type: application/json
Cache-Control: public, max-age=86400
Content-Type: text/css; charset=utf-8
Cache-Control response after publishing, especially for catalog and status JSON.Public routes
Keep the public file layout predictable. Teams often publish a catalog index, one release file per version, and asset paths that match the docs or static site output.
/catalog/index.json
/releases/[email protected]
/releases/feed.xml
/assets/product.css
/status.json
/.well-known/security.txt
Release checklist
- Collect the public files from the final build output, not an intermediate directory.
- Record versions, byte sizes, shortened SHA-256 references, cache directives, and public paths.
- Publish an immutable release manifest before updating the current catalog pointer.
- Request every catalog path and confirm the expected content type and success status.
- Verify live cache headers for metadata and stable assets.
- Publish the release note and feed entry with the same UTC timestamp.
Example response
{
"schema": 1,
"release": "[email protected]",
"fileCount": 12,
"published": "2026-07-09T16:20:00Z",
"catalogUrl": "https://aetherstatic.com/catalog/index.json"
}
Validation
A release check should fail when the catalog cannot be parsed, the schema is unsupported, a required field is missing, or a public path does not return a successful response.
curl -fsS https://aetherstatic.com/catalog/index.json -o catalog.json
curl -fsSI https://aetherstatic.com/assets/product.css
curl -fsSI https://aetherstatic.com/status.json
For checksum verification, compute SHA-256 from the downloaded file and compare the first twelve lowercase hexadecimal characters with the catalog reference.
Common mistakes
- Generating the catalog before the final CSS, image optimization, or metadata build has completed.
- Using the same cache directive for current metadata and stable media.
- Updating the catalog pointer without publishing an immutable version manifest first.
- Publishing a release note with a timestamp or file count that differs from the JSON.
- Treating a documented cache directive as proof that the live response header is correct.
Aether StaticOpen JSON