{
  "service": "brand-logo",
  "version": "0.0.1",
  "limits": {
    "maxResponseBytes": 4194304
  },
  "endpoints": {
    "logo": {
      "method": "GET",
      "path": "/api/logo",
      "description": "Compose a Pulumi logo at the requested dimensions, background, and format. Supports SVG (vector), PNG, JPEG, and PDF outputs. Use the `usage` preset for common cases (web, print, social-avatar, slide-deck, favicon, email-signature) or supply individual params.",
      "formats": [
        "svg",
        "png",
        "jpg",
        "pdf"
      ],
      "params": {
        "type": "object",
        "properties": {
          "usage": {
            "type": "string",
            "enum": [
              "web",
              "print",
              "social-avatar",
              "slide-deck",
              "favicon",
              "email-signature",
              "custom"
            ]
          },
          "lockup": {
            "type": "string",
            "enum": [
              "auto",
              "mark",
              "horizontal",
              "stacked",
              "icon-circle",
              "icon-rounded",
              "icon-square"
            ]
          },
          "treatment": {
            "type": "string",
            "enum": [
              "color",
              "monotone"
            ]
          },
          "theme": {
            "type": "string",
            "enum": [
              "light",
              "dark"
            ]
          },
          "format": {
            "type": "string",
            "enum": [
              "svg",
              "png",
              "jpg",
              "pdf"
            ]
          },
          "background": {
            "type": "string",
            "enum": [
              "transparent",
              "white",
              "black",
              "service-black",
              "violet-50",
              "violet-950"
            ]
          },
          "width": {
            "type": "number",
            "exclusiveMinimum": true,
            "minimum": 0,
            "maximum": 4096
          },
          "height": {
            "type": "number",
            "exclusiveMinimum": true,
            "minimum": 0,
            "maximum": 4096
          },
          "units": {
            "type": "string",
            "enum": [
              "px",
              "cm",
              "in"
            ]
          },
          "dpi": {
            "type": "number",
            "exclusiveMinimum": true,
            "minimum": 0,
            "maximum": 600
          }
        },
        "additionalProperties": false
      },
      "permalink": {
        "path": "/media/images/logos/:token",
        "description": "Permanent, query-string-free URL for a logo, for embedding in pages. Every /api/logo render returns its permalink in the Content-Location and Link (rel=canonical) response headers; fetch that URL to get the same image. The :token encodes the exact params, so no lookup or registration is needed. It either resolves to an image (200) or it doesn't (404) — anything that /api/logo would reject as a 400 is a 404 here."
      }
    },
    "health": {
      "method": "GET",
      "path": "/api/health",
      "description": "Readiness probe."
    }
  },
  "notes": [
    "GET /api/logo?param=value → image bytes with long-TTL Cache-Control.",
    "Each render also returns a permanent /media/images/logos/<token> URL in the Content-Location and Link response headers — use that for embedding instead of the query URL.",
    "Use ?v=<hash> to bust CDN cache; the value is stripped before rendering.",
    "Non-fatal warnings (e.g. below brand minimum size) arrive in the x-image-warnings response header.",
    "Agents with MCP access should prefer the get_logo tool on brand.pulumi.com/mcp — same backend, guided parameter resolution."
  ]
}