Reference

Manifest

The auto-generated surf.json manifest

Manifest#

The manifest is auto-generated from your config and served at /.well-known/surf.json. It includes a SHA-256 checksum for cache validation and drift detection.

json
// GET /.well-known/surf.json
{
"surf": "1.0",
"name": "My Store",
"description": "A Surf-enabled e-commerce API",
"version": "1.0.0",
"baseUrl": "https://shop.example.com",
"auth": {
"type": "bearer",
"description": "JWT Bearer token"
},
"commands": {
"search": {
"description": "Search products",
"params": {
"query": { "type": "string", "required": true },
"limit": { "type": "number", "default": 10 }
},
"returns": { "type": "object" },
"tags": ["catalog"],
"hints": { "idempotent": true, "sideEffects": false }
},
"cart.add": {
"description": "Add item to cart",
"params": { "sku": { "type": "string", "required": true } },
"auth": "required"
}
},
"events": {
"cart.updated": {
"description": "Cart contents changed",
"data": { "items": { "type": "array" } }
}
},
"types": {
"CartItem": {
"type": "object",
"properties": { "sku": { "type": "string" }, "quantity": { "type": "number" } }
}
},
"checksum": "a1b2c3d4e5f6...",
"updatedAt": "2025-03-20T18:00:00.000Z"
}

The manifest supports ETag-based caching. Clients send If-None-Match with the checksum, and Surf returns 304 Not Modified if unchanged. The Cache-Control header is set to public, max-age=300 by default.