{
    "name": "Dauntless Brand Service API",
    "description": "Read-only brand/theme data for Dauntless Ventures sites: domain and cluster metadata, full theme packages, generated color CSS, and embeddable badges. Every operation returns HTML by default -- add ?format=json or an Accept: application/json header to get JSON.",
    "version": "1.0",
    "baseUrl": "https://brand.dauntless.ventures",
    "url": "https://brand.dauntless.ventures/apis.json",
    "manifestVersion": "1.0",
    "apis": [
        {
            "operationId": "package_get",
            "name": "Get brand package",
            "category": "Brand Data",
            "path": "/package",
            "method": "GET",
            "summary": "Full theme + brand package for one domain",
            "description": "Returns the complete resolved package for a domain: active theme colors (light/dark), decorators, and brand metadata. Supports ETag/If-None-Match and Last-Modified caching -- a 304 is returned when the client's cached copy is still current.",
            "sideEffects": "read",
            "idempotent": true,
            "produces": [
                "application/json",
                "text/html"
            ],
            "parameters": [
                {
                    "name": "d",
                    "type": "string",
                    "required": true,
                    "description": "Domain to fetch the package for",
                    "enum": null,
                    "default": null
                }
            ],
            "examples": [
                {
                    "title": "Fetch a package",
                    "description": "The full resolved package for memorize.live",
                    "query": {
                        "d": "memorize.live"
                    }
                }
            ],
            "responseFormat": "{\n  \"error\": false,\n  \"status\": 200,\n  \"message\": \"Success\",\n  \"data\": {\n    \"domain\": \"memorize.live\",\n    \"light\": { \"colors\": { \"...\": \"...\" } },\n    \"dark\": { \"colors\": { \"...\": \"...\" } },\n    \"has_light\": true,\n    \"has_dark\": true,\n    \"last_modified\": \"...\",\n    \"etag\": \"...\"\n  }\n}"
        },
        {
            "operationId": "badges_domain",
            "name": "Get domain metadata",
            "category": "Brand Data",
            "path": "/badges/domain",
            "method": "GET",
            "summary": "Cluster/producer metadata for one domain",
            "description": "Returns the domain's stage, cluster, producer, resolved logo URL, and canonical site URL. Also reachable as /api/domain or /domain (aliased -- shorter, equivalent path).",
            "sideEffects": "read",
            "idempotent": true,
            "produces": [
                "application/json",
                "text/html"
            ],
            "parameters": [
                {
                    "name": "d",
                    "type": "string",
                    "required": true,
                    "description": "Domain to look up",
                    "enum": null,
                    "default": null
                }
            ],
            "examples": [
                {
                    "title": "Look up a domain",
                    "description": "Metadata for memorize.live",
                    "query": {
                        "d": "memorize.live"
                    }
                }
            ],
            "responseFormat": "{\n  \"error\": false,\n  \"status\": 200,\n  \"message\": \"Success\",\n  \"data\": {\n    \"domain\": \"memorize.live\",\n    \"stage\": \"App-Heavy\",\n    \"cluster\": \"renewthemind\",\n    \"cluster_label\": \"a renewal\",\n    \"cluster_color\": \"#2a7a30\",\n    \"cluster_color_dark\": \"#80e088\",\n    \"cluster_logo_url\": \"...\",\n    \"producer\": \"...\",\n    \"candidus\": false,\n    \"logo_url\": \"...\",\n    \"url\": \"...\"\n  }\n}"
        },
        {
            "operationId": "badges_sites",
            "name": "List sites",
            "category": "Brand Data",
            "path": "/badges/sites",
            "method": "GET",
            "summary": "All public sites with cluster/producer metadata",
            "description": "Returns every site in the portfolio with its stage, cluster, producer, resolved logo URL, and canonical site URL. No parameters -- always returns the full list.",
            "sideEffects": "read",
            "idempotent": true,
            "produces": [
                "application/json",
                "text/html"
            ],
            "parameters": [],
            "examples": [
                {
                    "title": "List all sites",
                    "description": "The full portfolio",
                    "query": []
                }
            ],
            "responseFormat": "{\n  \"error\": false,\n  \"status\": 200,\n  \"message\": \"Success\",\n  \"data\": [\n    { \"domain\": \"memorize.live\", \"stage\": \"...\", \"cluster\": \"...\", \"cluster_label\": \"...\", \"producer\": \"...\", \"candidus\": false, \"logo_url\": \"...\", \"url\": \"...\" }\n  ]\n}"
        },
        {
            "operationId": "badges_clusters",
            "name": "List clusters",
            "category": "Brand Data",
            "path": "/badges/clusters",
            "method": "GET",
            "summary": "All brand clusters",
            "description": "Returns the cluster registry (label, color, logo, url per cluster key); a label is a list of {text, style} segments. No parameters.",
            "sideEffects": "read",
            "idempotent": true,
            "produces": [
                "application/json",
                "text/html"
            ],
            "parameters": [],
            "examples": [
                {
                    "title": "List all clusters",
                    "description": "The full cluster registry",
                    "query": []
                }
            ],
            "responseFormat": "{\n  \"error\": false,\n  \"status\": 200,\n  \"message\": \"Success\",\n  \"data\": {\n    \"renewthemind\": { \"label\": \"a renewal\", \"color\": \"#2a7a30\", \"...\": \"...\" }\n  }\n}"
        },
        {
            "operationId": "badge_render",
            "name": "Render embeddable badge",
            "category": "Widgets",
            "path": "/badge",
            "method": "GET",
            "summary": "Embeddable HTML badge for a domain",
            "description": "Renders the small embeddable badge widget used on 60+ live sites (see Public/brand.js). This is a display widget, not a data endpoint -- it never returns JSON, only the rendered HTML fragment.",
            "sideEffects": "read",
            "idempotent": true,
            "produces": [
                "text/html"
            ],
            "parameters": [
                {
                    "name": "d",
                    "type": "string",
                    "required": true,
                    "description": "Domain the badge is for",
                    "enum": null,
                    "default": null
                },
                {
                    "name": "mode",
                    "type": "string",
                    "required": false,
                    "description": "Color mode",
                    "enum": [
                        "light",
                        "dark"
                    ],
                    "default": "light"
                },
                {
                    "name": "tiny",
                    "type": "boolean",
                    "required": false,
                    "description": "Render the compact variant",
                    "enum": null,
                    "default": false
                }
            ],
            "examples": [
                {
                    "title": "Light badge",
                    "description": "Default light-mode badge",
                    "query": {
                        "d": "memorize.live"
                    }
                },
                {
                    "title": "Dark, tiny badge",
                    "description": "Compact dark-mode variant",
                    "query": {
                        "d": "memorize.live",
                        "mode": "dark",
                        "tiny": "1"
                    }
                }
            ],
            "responseFormat": "<!-- an HTML fragment: badge markup + inline CSS, meant to be embedded directly -->"
        },
        {
            "operationId": "colors_css",
            "name": "Get theme colors as CSS",
            "category": "Widgets",
            "path": "/colors.css",
            "method": "GET",
            "summary": "Generated CSS custom properties for a domain's active theme",
            "description": "Generates CSS custom properties (light/dark) for a domain's active theme, meant to be linked directly as a stylesheet. Supports ETag/If-None-Match caching. This is a stylesheet endpoint -- it never returns JSON.",
            "sideEffects": "read",
            "idempotent": true,
            "produces": [
                "text/css"
            ],
            "parameters": [
                {
                    "name": "d",
                    "type": "string",
                    "required": true,
                    "description": "Domain to generate CSS for",
                    "enum": null,
                    "default": null
                }
            ],
            "examples": [
                {
                    "title": "Get colors.css",
                    "description": "CSS custom properties for memorize.live",
                    "query": {
                        "d": "memorize.live"
                    }
                }
            ],
            "responseFormat": ":root {\n  --color-bg: #ffffff;\n  /* ... */\n}\n@media (prefers-color-scheme: dark) {\n  :root { /* ... */ }\n}"
        }
    ]
}