{"components":{"schemas":{"AgentGenerationRequest":{"discriminator":{"propertyName":"kind"},"oneOf":[{"additionalProperties":false,"properties":{"identity":{"additionalProperties":true,"properties":{"description":{"maxLength":320,"minLength":1,"type":"string"},"ink":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"logoDataUrl":{"maxLength":5000000,"pattern":"^data:image/(gif|jpeg|png|svg\\+xml|webp);base64,[A-Za-z0-9+/=]+$","type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"},"paper":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"positioning":{"maxLength":320,"minLength":1,"type":"string"},"id":{"description":"An identity ID from /api/identities. Send { id } alone, or the complete identity object from /api/identities (custom identities included) to render with its edits. Do not combine with preset.","maxLength":120,"minLength":1,"type":"string"},"preset":{"enum":["custom","starter","template","basement","gt","ramp","mintlify","tailwind","viteplus","cloudflare","stripe"],"type":"string"},"shortName":{"maxLength":8,"minLength":1,"type":"string"},"tagline":{"maxLength":180,"minLength":1,"type":"string"},"website":{"maxLength":200,"minLength":1,"type":"string"}},"type":"object"},"kind":{"const":"background"},"output":{"enum":["json","raw"],"type":"string"},"settings":{"additionalProperties":true,"properties":{"angle":{"maximum":360,"minimum":-360,"type":"number"},"bandCount":{"maximum":24,"minimum":3,"type":"integer"},"bandDepth":{"maximum":100,"minimum":0,"type":"number"},"bandGap":{"maximum":64,"minimum":0,"type":"number"},"colorA":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"colorB":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"colorC":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"ditherMatrix":{"enum":[2,4,8],"type":"integer"},"ditherShape":{"enum":["dots","squares"],"type":"string"},"focalX":{"maximum":100,"minimum":0,"type":"number"},"focalY":{"maximum":100,"minimum":0,"type":"number"},"gradient":{"enum":["linear","radial","mesh","orbit","wave","bloom"],"type":"string"},"grain":{"maximum":100,"minimum":0,"type":"number"},"height":{"maximum":4096,"minimum":64,"type":"integer"},"lightingEnabled":{"type":"boolean"},"logoColor":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"logoOpacity":{"maximum":100,"minimum":0,"type":"number"},"logoScale":{"maximum":90,"minimum":5,"type":"number"},"logoTone":{"enum":["black","white"],"type":"string"},"logoX":{"maximum":50,"minimum":-50,"type":"number"},"logoY":{"maximum":50,"minimum":-50,"type":"number"},"pattern":{"enum":["none","dots","lines","grid","fibers","speckles","topographic","crosshatch"],"type":"string"},"patternOpacity":{"maximum":100,"minimum":0,"type":"number"},"relief":{"maximum":80,"minimum":0,"type":"number"},"spacing":{"maximum":256,"minimum":8,"type":"integer"},"style":{"enum":["gradient","grain-gradient","dither","pattern"],"type":"string"},"surfaceAngle":{"maximum":180,"minimum":0,"type":"number"},"surfaceDepth":{"maximum":100,"minimum":0,"type":"number"},"surfaceIrregularity":{"maximum":100,"minimum":0,"type":"number"},"surfaceLibraryAssetId":{"enum":["","polyhaven-velour-velvet","ambientcg-fabric-061","ambientcg-leather-037","polyhaven-oak-veneer","polyhaven-plywood","polyhaven-marble","polyhaven-metal-plate","ambientcg-metal-063","polyhaven-beige-wall","polyhaven-rubber-tiles","ambientcg-paper-006"],"type":"string"},"surfaceMaterial":{"enum":["none","kerf-wood","woven-wire","perforated-metal","carved-stone","embossed-paper","brushed-metal","hammered-foil","corrugated-polymer","cork-composite","frosted-glass","iridescent-film","holo-cloth","linen-weave","felted-wool","pebbled-leather","crackle-glaze","sandblasted-plaster","graphite","carbon-twill"],"type":"string"},"surfaceMetallic":{"maximum":100,"minimum":0,"type":"number"},"surfaceOpenArea":{"maximum":92,"minimum":0,"type":"number"},"surfaceRoughness":{"maximum":100,"minimum":0,"type":"number"},"surfaceScale":{"maximum":140,"minimum":12,"type":"number"},"surfaceTextureAmount":{"maximum":100,"minimum":0,"type":"number"},"width":{"maximum":4096,"minimum":64,"type":"integer"}},"type":"object"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"backgroundColor":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"effect":{"additionalProperties":true,"properties":{"background":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"cellSize":{"maximum":64,"minimum":1,"type":"number"},"contrast":{"maximum":4,"minimum":0.1,"type":"number"},"foreground":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"invert":{"type":"boolean"},"kind":{"enum":["ascii","bayer","halftone","posterize"],"type":"string"},"levels":{"maximum":8,"minimum":2,"type":"integer"},"opacity":{"maximum":1,"minimum":0,"type":"number"},"threshold":{"maximum":1,"minimum":0,"type":"number"}},"type":"object"},"export":{"additionalProperties":true,"properties":{"durationMs":{"maximum":4000,"minimum":1200,"type":"integer"},"fps":{"enum":[12,15,24,30],"type":"integer"},"gifLoop":{"enum":["raw","seamless"],"type":"string"},"quality":{"enum":["fast","balanced","best"],"type":"string"},"width":{"maximum":3840,"minimum":320,"type":"integer"}},"type":"object"},"identity":{"additionalProperties":true,"properties":{"description":{"maxLength":320,"minLength":1,"type":"string"},"ink":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"logoDataUrl":{"maxLength":5000000,"pattern":"^data:image/(gif|jpeg|png|svg\\+xml|webp);base64,[A-Za-z0-9+/=]+$","type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"},"paper":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"positioning":{"maxLength":320,"minLength":1,"type":"string"},"id":{"description":"An identity ID from /api/identities. Send { id } alone, or the complete identity object from /api/identities (custom identities included) to render with its edits. Do not combine with preset.","maxLength":120,"minLength":1,"type":"string"},"preset":{"enum":["custom","starter","template","basement","gt","ramp","mintlify","tailwind","viteplus","cloudflare","stripe"],"type":"string"},"shortName":{"maxLength":8,"minLength":1,"type":"string"},"tagline":{"maxLength":180,"minLength":1,"type":"string"},"website":{"maxLength":200,"minLength":1,"type":"string"}},"type":"object"},"includeBrandMark":{"type":"boolean"},"kind":{"const":"design-sequence"},"ratio":{"enum":["wide","square","opengraph"],"type":"string"},"sequence":{"additionalProperties":true,"properties":{"cutCount":{"maximum":12,"minimum":8,"type":"integer"},"finalHoldMs":{"maximum":6000,"minimum":3000,"type":"integer"},"pace":{"enum":["accelerating","even"],"type":"string"}},"type":"object"},"shader":{"additionalProperties":true,"properties":{"blendMode":{"enum":["multiply","normal","overlay","screen"],"type":"string"},"materialId":{"enum":["paper-gem-smoke","shaders-fluid-chrome","study-line-field","paper-liquid-metal","study-chrome-glares","paper-god-rays","paper-warp","glyphfield-dither-gradient","glyphfield-mesh-gradient","shaders-spectral-bloom","study-radiant-void","study-galactic-rings","pavel-fluid-energy","holo-cloth-silk","glyphfield-liquid-glass","glyphfield-caustics","glyphfield-iridescent-foil","glyphfield-nebula","paper-liquid-metal-noir","glyphfield-silk-ribbons","paper-liquid-metal-stripes","study-relief-gradient","study-orbit-gradient","paper-gem-smoke-fire","paper-liquid-metal-backdrop","paper-gem-smoke-fluorescent","paper-god-rays-ether","paper-smoke-ring-solar","shader-effects-aurora","paper-gem-smoke-infrared","shader-effects-liquid-metal","shader-effects-chrome","shader-effects-holographic","shader-effects-godrays","shader-effects-plasma","shaders-soft-register","shader-effects-mesh-gradient","shader-effects-nebula","shader-effects-flowing-gradient","paper-god-rays-linear","glyphfield-grain-gradient","paper-god-rays-warp","paper-mesh-gradient-purple","shader-effects-prism","shader-effects-strands","paper-smoke-ring","paper-warp-live-ink","shaders-chroma-flow","paper-smoke-ring-cloud","paper-mesh-gradient","paper-smoke-ring-line","shaders-pistons","paper-grain-gradient-wave","paper-mesh-gradient-beach","shaders-drift","paper-mesh-gradient-ink","paper-water-abstract","shadergradient-prismatic-sphere","glyphfield-glyph-field","shader-effects-obsidian","paper-warp-cauldron-pot","shader-effects-light-edge","paper-warp-kelp","paper-grain-gradient","paper-warp-nectar","shader-effects-neon","paper-warp-passion","shader-effects-irradiance","shader-effects-water","shader-effects-marble","shader-effects-swirl","shader-effects-blob","shader-effects-brushed-metal","paper-grain-gradient-blob","shader-effects-hologram","paper-grain-gradient-dots","shader-effects-frost","paper-grain-gradient-ripple","shader-effects-plastic","paper-grain-gradient-truchet","paper-water","shader-effects-goo","shader-effects-lens-flare","shaders-circuit","paper-water-slow-mo","paper-neuro-noise","paper-water-streaming","paper-neuro-noise-bloodstream","paper-metaballs","paper-neuro-noise-ghost","paper-metaballs-background","paper-neuro-noise-sensation","paper-metaballs-ink-drops","shader-effects-smoke-fill","paper-metaballs-solar","shader-effects-ink-flow","shader-effects-smoke","shader-effects-smoke-flow","shaders-mosaic","shader-effects-reaction-diffusion","shader-effects-chroma-flow","shader-effects-fog","shader-effects-particle-flow","shader-effects-magnetic-filings","shader-effects-boids","shaders-pixel-beams","paper-swirl","paper-color-panels","paper-swirl-007","paper-color-panels-glass","paper-swirl-candy","paper-color-panels-gradient","paper-swirl-opening","paper-color-panels-opening","paper-dithering","paper-heatmap","paper-dithering-bugs","paper-heatmap-sepia","paper-dithering-ripple","paper-fluted-glass","paper-dithering-sine-wave","paper-fluted-glass-abstract","paper-dithering-swirl","paper-fluted-glass-folds","paper-dithering-warp","paper-fluted-glass-waves","shader-effects-cursor-trail","shader-effects-multi-point-gradient","shader-effects-waveform","shader-effects-sun-burst","shader-effects-carbon-fiber","shader-effects-heatmap","shader-effects-curl-noise","shader-effects-voronoi","shader-effects-ripples","shader-effects-conic-gradient","shader-effects-voxels","shader-effects-particles","shader-effects-floating-particles","shader-effects-falling-lines","shader-effects-fractal-noise","shader-effects-erosion-noise","shader-effects-beam","paper-voronoi","paper-spiral","paper-voronoi-bubbles","paper-spiral-droplet","paper-voronoi-cells","paper-spiral-jungle","paper-voronoi-lights","paper-spiral-swirl","paper-pulsing-border","shader-effects-worley-noise","paper-pulsing-border-circle","shader-effects-isometric-cubes","paper-pulsing-border-northern-lights","shader-effects-truchet","paper-pulsing-border-solid-line","shader-effects-weave","shader-effects-spiral","shader-effects-scratches","shader-effects-sine-wave","paper-dot-orbit","paper-paper-texture","paper-dot-orbit-bubbles","paper-paper-texture-abstract","paper-dot-orbit-hallucinatory","paper-paper-texture-cardboard","paper-dot-orbit-shine","paper-paper-texture-details","shader-effects-color-wheel","shader-effects-triangular-grid","shader-effects-hex-grid","shader-effects-dot-grid","shader-effects-brick-pattern","shader-effects-chevron","shader-effects-stripes","shader-effects-block-noise","shader-effects-blue-noise","paper-dot-grid","paper-image-dithering","paper-dot-grid-tree-line","paper-image-dithering-natural","paper-dot-grid-triangles","paper-image-dithering-noise","paper-dot-grid-wallpaper","paper-image-dithering-retro","paper-halftone-dots","paper-halftone-cmyk","paper-halftone-dots-led-screen","paper-halftone-cmyk-drops","paper-halftone-dots-mosaic","paper-halftone-cmyk-newspaper","paper-halftone-dots-round-and-square","paper-halftone-cmyk-vintage","shader-effects-checkerboard","shader-effects-grid"],"type":"string"},"opacity":{"maximum":1,"minimum":0,"type":"number"},"settings":{"additionalProperties":false,"properties":{"effectProps":{"type":"object","description":"Native Shaders.com props: only the values to change. Keys, defaults, options and ranges are declared by each material nativeControls in /api/materials; omitted keys use those defaults. Remote media URLs are not accepted."},"amplitude":{"maximum":8,"minimum":0,"type":"number"},"brightness":{"maximum":2,"minimum":0.1,"type":"number"},"centerX":{"maximum":1,"minimum":0,"type":"number"},"centerY":{"maximum":1,"minimum":0,"type":"number"},"colorA":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"colorB":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"colorC":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"density":{"maximum":2,"minimum":0.1,"type":"number"},"detail":{"maximum":8,"minimum":0.5,"type":"number"},"frequency":{"maximum":10,"minimum":0.2,"type":"number"},"grain":{"maximum":100,"minimum":0,"type":"number"},"rotationX":{"maximum":360,"minimum":0,"type":"number"},"rotationY":{"maximum":360,"minimum":0,"type":"number"},"rotationZ":{"maximum":360,"minimum":0,"type":"number"},"speed":{"maximum":1.5,"minimum":0,"type":"number"},"strength":{"maximum":2,"minimum":0,"type":"number"}},"type":"object"},"shaderSize":{"maximum":10,"minimum":0.1,"type":"number"}},"type":"object"},"texts":{"items":{"additionalProperties":true,"properties":{"align":{"enum":["center","left","right"],"type":"string"},"color":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"fontRole":{"enum":["Accent","Body","Code","Display"],"type":"string"},"lineHeight":{"maximum":1.8,"minimum":0.7,"type":"number"},"name":{"maxLength":80,"minLength":1,"type":"string"},"opacity":{"maximum":1,"minimum":0,"type":"number"},"scale":{"maximum":3,"minimum":0.2,"type":"number"},"tracking":{"maximum":0.2,"minimum":-0.12,"type":"number"},"value":{"maxLength":1000,"minLength":1,"type":"string"},"weight":{"maximum":900,"minimum":100,"type":"integer"},"widthScale":{"maximum":3,"minimum":0.25,"type":"number"},"wrap":{"enum":["nowrap","wrap"],"type":"string"},"x":{"maximum":5000,"minimum":-5000,"type":"number"},"y":{"maximum":5000,"minimum":-5000,"type":"number"}},"type":"object"},"maxItems":32,"type":"array"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"elementId":{"enum":["welcome-email","onboarding-day3-no-api-key-email","onboarding-day3-api-key-email","onboarding-day3-live-email","onboarding-day5-no-api-key-email","onboarding-day6-api-key-email","onboarding-day6-live-email","onboarding-payment-confirmation-email","auth-magic-link-email","membership-invitation-email","enterprise-intro-email","enterprise-day3-follow-up-email","enterprise-day7-follow-up-email","balance-soft-limit-email","balance-hard-limit-email","free-credit-soft-limit-email","free-credit-hard-limit-email","usage-soft-limit-email","usage-hard-limit-email","billing-payment-failed-email","billing-plan-canceled-email","upgrade-confirmation-email","locadex-setup-complete-email","locadex-pr-reminder-email","email-system-sheet","email-signature","web-card","logo-background","opengraph","error-page","favicon-set","app-icon","navigation-bar","hero-section","feature-grid","pricing-card","testimonial-card","form-controls","command-menu","modal-dialog","toast-notification","data-table","dashboard-widget","empty-state","checkout-card","settings-panel","cli-banner","ascii-mark","terminal-theme","github-readme","docs-header","package-card","x-post","linkedin-post","community-card","social-avatar","launch-card","slide-title","slide-section","blog-cover","report-cover","press-kit","lanyard","event-badge","event-backdrop","partnership-lockup","business-card","sticker-sheet","packaging-label","letterhead","newsletter-email","app-store-gallery","event-invitation-email","auth-screen","sidebar-navigation","search-surface","onboarding-checklist","file-uploader","status-page","api-reference-hero","code-playground","release-notes","video-thumbnail","podcast-cover","social-carousel","case-study-cover","whitepaper-cover","booth-wall","notebook-cover"],"type":"string"},"identity":{"additionalProperties":true,"properties":{"description":{"maxLength":320,"minLength":1,"type":"string"},"ink":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"logoDataUrl":{"maxLength":5000000,"pattern":"^data:image/(gif|jpeg|png|svg\\+xml|webp);base64,[A-Za-z0-9+/=]+$","type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"},"paper":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"positioning":{"maxLength":320,"minLength":1,"type":"string"},"id":{"description":"An identity ID from /api/identities. Send { id } alone, or the complete identity object from /api/identities (custom identities included) to render with its edits. Do not combine with preset.","maxLength":120,"minLength":1,"type":"string"},"preset":{"enum":["custom","starter","template","basement","gt","ramp","mintlify","tailwind","viteplus","cloudflare","stripe"],"type":"string"},"shortName":{"maxLength":8,"minLength":1,"type":"string"},"tagline":{"maxLength":180,"minLength":1,"type":"string"},"website":{"maxLength":200,"minLength":1,"type":"string"}},"type":"object"},"kind":{"const":"element-brief"}},"required":["elementId","kind"],"type":"object"},{"additionalProperties":false,"properties":{"background":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"backgroundImageDataUrl":{"maxLength":5000000,"pattern":"^data:image/(gif|jpeg|png|svg\\+xml|webp);base64,[A-Za-z0-9+/=]+$","type":"string"},"body":{"maxLength":1000,"minLength":1,"type":"string"},"foreground":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"format":{"description":"Format preset ID: opengraph | wide | square | portrait | story | linkedin | lockup, or for slides 16x9 | 4x3 | square.","type":"string"},"identity":{"additionalProperties":true,"properties":{"description":{"maxLength":320,"minLength":1,"type":"string"},"ink":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"logoDataUrl":{"maxLength":5000000,"pattern":"^data:image/(gif|jpeg|png|svg\\+xml|webp);base64,[A-Za-z0-9+/=]+$","type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"},"paper":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"},"positioning":{"maxLength":320,"minLength":1,"type":"string"},"id":{"description":"An identity ID from /api/identities. Send { id } alone, or the complete identity object from /api/identities (custom identities included) to render with its edits. Do not combine with preset.","maxLength":120,"minLength":1,"type":"string"},"preset":{"enum":["custom","starter","template","basement","gt","ramp","mintlify","tailwind","viteplus","cloudflare","stripe"],"type":"string"},"shortName":{"maxLength":8,"minLength":1,"type":"string"},"tagline":{"maxLength":180,"minLength":1,"type":"string"},"website":{"maxLength":200,"minLength":1,"type":"string"}},"type":"object"},"kind":{"const":"template"},"language":{"enum":["typescript","tsx","javascript","python","bash","json","html","css"],"type":"string"},"layout":{"description":"Layout variant ID for the template (the Studio layout list). Slides also accept slideLayout.","type":"string"},"output":{"enum":["json","raw"],"type":"string"},"partnerId":{"maxLength":80,"minLength":1,"type":"string"},"partnerLogoDataUrl":{"maxLength":5000000,"pattern":"^data:image/(gif|jpeg|png|svg\\+xml|webp);base64,[A-Za-z0-9+/=]+$","type":"string"},"slideLayout":{"enum":["title","section","agenda","split","metrics","quote","timeline","statement","comparison","process","chart","team","image","closing"],"type":"string"},"template":{"enum":["slides","blog","partnership","opengraph","terminal"],"type":"string"},"texture":{"enum":["white","dark","grid","noise"],"type":"string"},"title":{"maxLength":240,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"}]},"BrandIdentity":{"$id":"https://glyphfield.app/schemas/brand-identity.json","$schema":"https://json-schema.org/draft/2020-12/schema","title":"Rev Pop Brands BrandIdentity","description":"A complete Rev Pop Brands BrandIdentity. Unknown fields are kept as-is.","additionalProperties":true,"properties":{"applications":{"description":"Real applications the identity must work across.","items":{"additionalProperties":true,"properties":{"category":{"enum":["foundation","product","marketing","editorial","social","developer","event","physical"],"maxLength":40,"type":"string"},"description":{"maxLength":600,"minLength":1,"type":"string"},"format":{"description":"Size or format, such as 1600 × 1000 or 1:1 / 4:5.","maxLength":120,"minLength":1,"type":"string"},"id":{"description":"Stable record ID. Keep it unchanged when editing.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"name":{"maxLength":120,"minLength":1,"type":"string"}},"required":["category","description","format","id","name"],"type":"object"},"maxItems":48,"type":"array","x-glyphfield-merge-key":"id"},"artDirection":{"additionalProperties":true,"properties":{"moodboard":{"enum":["cinematic-field","editorial-evidence","knowledge-system","modular-proof","monochrome-language","network-atlas","product-spectrum","research-wall","utility-current"],"maxLength":40,"type":"string"},"preview":{"enum":["editorial-interruption","economic-ledger","focus-window","knowledge-beam","network-horizon","programmable-field","translation-frame","unified-terminal","utility-wave"],"maxLength":40,"type":"string"},"titleMaxLines":{"maximum":2,"minimum":1,"type":"integer"}},"type":"object"},"assets":{"description":"Logos, backgrounds, textures, imagery, product and reference files.","items":{"additionalProperties":true,"properties":{"alt":{"description":"Alternative text for screen readers.","maxLength":400,"type":"string"},"attribution":{"maxLength":600,"type":"string"},"focalPoint":{"additionalProperties":true,"properties":{"x":{"maximum":1,"minimum":0,"type":"number"},"y":{"maximum":1,"minimum":0,"type":"number"}},"required":["x","y"],"type":"object"},"id":{"description":"Stable asset ID. Logo slots: mark-dark (for light surfaces), mark-light (for dark surfaces), wordmark, wordmark-light, mark-mono.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"label":{"maxLength":200,"minLength":1,"type":"string"},"license":{"maxLength":400,"type":"string"},"path":{"description":"A data: URL or a root-relative path served by this Rev Pop Brands origin. Remote http(s) URLs are never fetched; add files with identity.asset.add instead.","pattern":"^(?:$|data:[^,]*,|\\/(?!\\/))","x-glyphfield-format":"local-file","maxLength":7000000,"minLength":1,"type":"string"},"redistribution":{"enum":["bundled","original","research-only","url-only"],"maxLength":40,"type":"string"},"sourceOwner":{"maxLength":200,"type":"string"},"sourceUrl":{"description":"Where the asset came from. Recorded only; never fetched.","pattern":"^(?:https?:\\/\\/\\S+|[a-z0-9][a-z0-9.-]*\\.[a-z]{2,}(?:\\/\\S*)?)?$","x-glyphfield-format":"web-url","maxLength":2000,"type":"string"},"surface":{"description":"The surface the asset is designed for: a dark mark sits on light surfaces.","enum":["light","dark","any"],"maxLength":40,"type":"string"},"tags":{"items":{"maxLength":60,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"type":{"enum":["background","icon","image","logo","motion","product","proof","reference","texture"],"maxLength":40,"type":"string"},"usage":{"maxLength":600,"type":"string"}},"required":["id","label","path","surface","type"],"type":"object"},"maxItems":160,"type":"array","x-glyphfield-merge-key":"id"},"audiences":{"description":"Who the brand addresses.","items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"builtIn":{"description":"Managed by Rev Pop Brands; ignored on apply.","type":"boolean"},"colorPairings":{"description":"Foreground/background color pairs intended for text or icons. Merged by foreground and background.","items":{"additionalProperties":true,"properties":{"background":{"pattern":"^[a-z][a-z0-9-]{0,39}$","x-glyphfield-format":"color-id","maxLength":40,"minLength":1,"type":"string"},"foreground":{"pattern":"^[a-z][a-z0-9-]{0,39}$","x-glyphfield-format":"color-id","maxLength":40,"minLength":1,"type":"string"},"level":{"description":"AA needs 4.5:1 for text; AA-large needs 3:1 for large display text and icons.","enum":["AA","AA-large"],"maxLength":40,"type":"string"},"usage":{"maxLength":200,"minLength":1,"type":"string"}},"required":["background","foreground","usage"],"type":"object"},"maxItems":32,"type":"array","x-glyphfield-merge-key":"foreground+background"},"colorSystem":{"description":"Semantic light and dark color roles and per-color OKLCH scale settings. Role values are color refs: a colors[].id such as \"ink\" or one of its scale steps such as \"ink.700\" (steps 50, 100 … 900, 950). Omitted roles are derived from the palette.","additionalProperties":true,"properties":{"dark":{"description":"Role overrides for dark mode.","additionalProperties":true,"properties":{"background":{"description":"Page canvas behind everything","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"surface":{"description":"Cards, panels, inputs and menus","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"surface-muted":{"description":"Quiet fills, hover rows and table headers","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"foreground":{"description":"Body text, headings and icons","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"foreground-muted":{"description":"Secondary text, hints and metadata","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"border":{"description":"Dividers, outlines and input borders","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"primary":{"description":"Primary actions, selection and links","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"primary-foreground":{"description":"Text and icons on primary","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"focus":{"description":"Keyboard focus outline","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"positive":{"description":"Success and healthy states","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"caution":{"description":"Warnings that need attention","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"negative":{"description":"Errors and destructive actions","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"}},"type":"object"},"light":{"description":"Role overrides for light mode.","additionalProperties":true,"properties":{"background":{"description":"Page canvas behind everything","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"surface":{"description":"Cards, panels, inputs and menus","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"surface-muted":{"description":"Quiet fills, hover rows and table headers","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"foreground":{"description":"Body text, headings and icons","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"foreground-muted":{"description":"Secondary text, hints and metadata","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"border":{"description":"Dividers, outlines and input borders","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"primary":{"description":"Primary actions, selection and links","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"primary-foreground":{"description":"Text and icons on primary","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"focus":{"description":"Keyboard focus outline","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"positive":{"description":"Success and healthy states","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"caution":{"description":"Warnings that need attention","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"negative":{"description":"Errors and destructive actions","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"}},"type":"object"},"scales":{"description":"Per-color scale settings. Merged by id.","items":{"additionalProperties":true,"properties":{"anchor":{"description":"Snap the nearest step to the exact palette HEX (default true).","type":"boolean"},"chroma":{"description":"Chroma as a percentage of the palette color (default 100).","maximum":200,"minimum":0,"type":"number"},"darkest":{"description":"OKLCH lightness of step 950 (default 0.22).","maximum":0.5,"minimum":0,"type":"number"},"hueShift":{"description":"Hue rotation in degrees from step 50 to step 950 (default 0).","maximum":90,"minimum":-90,"type":"number"},"id":{"description":"The colors[].id this scale belongs to.","pattern":"^[a-z][a-z0-9-]{0,39}$","x-glyphfield-format":"color-id","maxLength":40,"minLength":1,"type":"string"},"lightest":{"description":"OKLCH lightness of step 50 (default 0.975).","maximum":1,"minimum":0.5,"type":"number"}},"required":["id"],"type":"object"},"maxItems":32,"type":"array","x-glyphfield-merge-key":"id"}},"type":"object"},"colors":{"description":"Semantic colors.","items":{"additionalProperties":true,"properties":{"hex":{"description":"Six-digit HEX such as #1A2B3C.","pattern":"^#[0-9A-Fa-f]{6}$","x-glyphfield-format":"hex","maxLength":7,"minLength":7,"type":"string"},"id":{"description":"Token-safe semantic ID. Rev Pop Brands tools read ink, paper, muted and emphasis; success, warning, progress and error are optional extensions.","pattern":"^[a-z][a-z0-9-]{0,39}$","x-glyphfield-format":"color-id","maxLength":40,"minLength":1,"type":"string"},"name":{"maxLength":60,"minLength":1,"type":"string"},"proportion":{"description":"Approximate share of visual space in percent.","maximum":100,"minimum":0,"type":"number"},"role":{"description":"What the color is for.","maxLength":200,"type":"string"}},"required":["hex","id","name","role"],"type":"object"},"maxItems":32,"type":"array","x-glyphfield-merge-key":"id"},"contactEmail":{"pattern":"^(?:[^\\s@]+@[^\\s@]+\\.[^\\s@]+)?$","x-glyphfield-format":"email","maxLength":254,"type":"string"},"customers":{"description":"Customer or client names the brand publishes. Keep proof statements in proof.","items":{"maxLength":120,"minLength":1,"type":"string"},"maxItems":48,"type":"array"},"description":{"maxLength":600,"type":"string"},"dossier":{"additionalProperties":true,"properties":{"applications":{"items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"color":{"maxLength":2000,"type":"string"},"graphicDevice":{"maxLength":2000,"type":"string"},"imagery":{"maxLength":2000,"type":"string"},"layout":{"maxLength":2000,"type":"string"},"logo":{"maxLength":2000,"type":"string"},"motion":{"maxLength":2000,"type":"string"},"personality":{"maxLength":2000,"type":"string"},"premise":{"maxLength":2000,"type":"string"},"prohibited":{"description":"Do-not rules.","items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"provenance":{"maxLength":2000,"type":"string"},"renderingRecipe":{"items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"typography":{"maxLength":2000,"type":"string"}},"type":"object"},"fonts":{"description":"Font files stored with the identity.","items":{"additionalProperties":true,"properties":{"family":{"maxLength":80,"minLength":1,"type":"string"},"fileName":{"maxLength":200,"minLength":1,"type":"string"},"format":{"enum":["opentype","truetype","woff","woff2"],"maxLength":40,"type":"string"},"id":{"description":"Stable record ID. Keep it unchanged when editing.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"label":{"maxLength":120,"minLength":1,"type":"string"},"license":{"description":"License or usage terms, such as OFL-1.1.","maxLength":400,"type":"string"},"path":{"description":"A data: URL or a root-relative path served by this origin. Add font files with identity.font.add.","pattern":"^(?:$|data:[^,]*,|\\/(?!\\/))","x-glyphfield-format":"local-file","maxLength":7000000,"minLength":1,"type":"string"},"sourceUrl":{"pattern":"^(?:https?:\\/\\/\\S+|[a-z0-9][a-z0-9.-]*\\.[a-z]{2,}(?:\\/\\S*)?)?$","x-glyphfield-format":"web-url","maxLength":2000,"type":"string"},"style":{"enum":["italic","normal"],"maxLength":40,"type":"string"},"weight":{"maximum":1000,"minimum":1,"type":"number"},"weightMax":{"maximum":1000,"minimum":1,"type":"number"},"weightMin":{"maximum":1000,"minimum":1,"type":"number"}},"required":["family","fileName","format","id","label","path","style","weight"],"type":"object"},"maxItems":24,"type":"array","x-glyphfield-merge-key":"id"},"graphicDevice":{"description":"The brand asset that stands in as the graphic device on brand book pages and brand elements; without one, a quiet field in brand colors.","additionalProperties":true,"properties":{"assetId":{"description":"ID of an asset from assets when source is asset.","maxLength":120,"type":"string"},"source":{"description":"Always asset; the frame is filled with the asset named by assetId.","enum":["glyphs","asset"],"maxLength":40,"type":"string"}},"type":"object"},"graphicSystem":{"additionalProperties":true,"properties":{"composition":{"maxLength":2000,"type":"string"},"description":{"maxLength":2000,"type":"string"},"device":{"description":"The one recognizable graphic device.","maxLength":200,"type":"string"},"imageDirection":{"maxLength":2000,"type":"string"},"pattern":{"enum":["blocks","brackets","burst","circuit","flow","grid","none","orbit","rays","steps","wave"],"maxLength":40,"type":"string"},"rules":{"items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":24,"type":"array"}},"type":"object"},"greetings":{"description":"Short words used by motion and language specimens.","items":{"maxLength":120,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"id":{"description":"Project ID. Managed by Rev Pop Brands; it cannot be changed on apply.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"kind":{"description":"Managed by Rev Pop Brands; ignored on apply.","enum":["template","example","custom"],"maxLength":40,"type":"string"},"mission":{"maxLength":600,"type":"string"},"motion":{"description":"Named motion behaviors.","items":{"additionalProperties":true,"properties":{"curve":{"description":"CSS easing such as cubic-bezier(0.2, 0.8, 0.2, 1).","maxLength":120,"minLength":1,"type":"string"},"description":{"maxLength":600,"type":"string"},"durationMs":{"maximum":60000,"minimum":0,"type":"integer"},"id":{"description":"Stable record ID. Keep it unchanged when editing.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"name":{"maxLength":120,"minLength":1,"type":"string"},"previewPath":{"pattern":"^(?:$|data:[^,]*,|\\/(?!\\/))","x-glyphfield-format":"local-file","maxLength":7000000,"type":"string"}},"required":["curve","durationMs","id","name"],"type":"object"},"maxItems":24,"type":"array","x-glyphfield-merge-key":"id"},"name":{"maxLength":80,"minLength":1,"type":"string"},"positioning":{"maxLength":600,"type":"string"},"presetFingerprint":{"description":"Managed by Rev Pop Brands; ignored on apply.","maxLength":80,"type":"string"},"productDetails":{"description":"One-line summaries for products. Replaced as a whole.","items":{"additionalProperties":true,"properties":{"name":{"description":"A name from products.","maxLength":120,"minLength":1,"type":"string"},"summary":{"description":"One plain line that says what the product does.","maxLength":240,"minLength":1,"type":"string"}},"required":["name","summary"],"type":"object"},"maxItems":48,"type":"array"},"products":{"items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":48,"type":"array"},"proof":{"description":"Verifiable proof statements such as published metrics. Customer names go in customers.","items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":48,"type":"array"},"proofAssets":{"description":"Customer or partner marks used as proof.","items":{"additionalProperties":true,"properties":{"alt":{"description":"Alternative text for screen readers.","maxLength":400,"type":"string"},"attribution":{"maxLength":600,"type":"string"},"focalPoint":{"additionalProperties":true,"properties":{"x":{"maximum":1,"minimum":0,"type":"number"},"y":{"maximum":1,"minimum":0,"type":"number"}},"required":["x","y"],"type":"object"},"id":{"description":"Stable asset ID. Logo slots: mark-dark (for light surfaces), mark-light (for dark surfaces), wordmark, wordmark-light, mark-mono.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"label":{"maxLength":200,"minLength":1,"type":"string"},"license":{"maxLength":400,"type":"string"},"path":{"description":"A data: URL or a root-relative path served by this Rev Pop Brands origin. Remote http(s) URLs are never fetched; add files with identity.asset.add instead.","pattern":"^(?:$|data:[^,]*,|\\/(?!\\/))","x-glyphfield-format":"local-file","maxLength":7000000,"minLength":1,"type":"string"},"redistribution":{"enum":["bundled","original","research-only","url-only"],"maxLength":40,"type":"string"},"sourceOwner":{"maxLength":200,"type":"string"},"sourceUrl":{"description":"Where the asset came from. Recorded only; never fetched.","pattern":"^(?:https?:\\/\\/\\S+|[a-z0-9][a-z0-9.-]*\\.[a-z]{2,}(?:\\/\\S*)?)?$","x-glyphfield-format":"web-url","maxLength":2000,"type":"string"},"surface":{"description":"The surface the asset is designed for: a dark mark sits on light surfaces.","enum":["light","dark","any"],"maxLength":40,"type":"string"},"tags":{"items":{"maxLength":60,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"type":{"enum":["background","icon","image","logo","motion","product","proof","reference","texture"],"maxLength":40,"type":"string"},"usage":{"maxLength":600,"type":"string"}},"required":["id","label","path","surface","type"],"type":"object"},"maxItems":64,"type":"array","x-glyphfield-merge-key":"id"},"references":{"description":"Research records with provenance.","items":{"additionalProperties":true,"properties":{"assetId":{"description":"Stable record ID. Keep it unchanged when editing.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"capturedAt":{"maxLength":40,"type":"string"},"category":{"enum":["campaign","concept","material","motion","official"],"maxLength":40,"type":"string"},"id":{"description":"Stable record ID. Keep it unchanged when editing.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"intendedUse":{"maxLength":600,"type":"string"},"owner":{"maxLength":200,"type":"string"},"redistribution":{"enum":["bundled","original","research-only","url-only"],"maxLength":40,"type":"string"},"sourceUrl":{"pattern":"^(?:https?:\\/\\/\\S+|[a-z0-9][a-z0-9.-]*\\.[a-z]{2,}(?:\\/\\S*)?)?$","x-glyphfield-format":"web-url","maxLength":2000,"type":"string"},"status":{"enum":["captured","planned","reviewed"],"maxLength":40,"type":"string"},"title":{"maxLength":200,"minLength":1,"type":"string"}},"required":["category","id","intendedUse","owner","redistribution","sourceUrl","status","title"],"type":"object"},"maxItems":64,"type":"array","x-glyphfield-merge-key":"id"},"removedAssetIds":{"description":"IDs of shipped or generated assets removed on purpose; they stay gone after a reload.","items":{"maxLength":120,"minLength":1,"type":"string"},"maxItems":200,"type":"array"},"revision":{"description":"Managed by Rev Pop Brands; ignored on apply.","maximum":1000000,"minimum":0,"type":"integer"},"samples":{"description":"Sample content templates use instead of placeholders. Samples, not claims about real people.","additionalProperties":true,"properties":{"actions":{"description":"Short product actions for command menus, checklists and dialogs, such as \"Refund a payment\".","items":{"maxLength":80,"minLength":1,"type":"string"},"maxItems":12,"type":"array"},"code":{"description":"A real request, command or snippet from the brand's docs.","additionalProperties":true,"properties":{"label":{"description":"Such as POST /v1/payment_intents.","maxLength":120,"type":"string"},"snippet":{"maxLength":1200,"type":"string"}},"type":"object"},"event":{"additionalProperties":true,"properties":{"date":{"maxLength":40,"type":"string"},"location":{"maxLength":80,"type":"string"},"name":{"maxLength":120,"type":"string"},"time":{"maxLength":40,"type":"string"}},"type":"object"},"install":{"description":"The install or getting-started command from the brand's docs.","maxLength":200,"type":"string"},"metric":{"description":"One dashboard figure, shown as sample interface data.","additionalProperties":true,"properties":{"change":{"maxLength":120,"type":"string"},"label":{"maxLength":80,"type":"string"},"value":{"maxLength":40,"type":"string"}},"type":"object"},"person":{"additionalProperties":true,"properties":{"name":{"maxLength":80,"type":"string"},"role":{"maxLength":120,"type":"string"}},"type":"object"},"plans":{"description":"Published plans or engagement types. Use the brand's own prices; never invent them.","items":{"additionalProperties":true,"properties":{"features":{"items":{"maxLength":120,"minLength":1,"type":"string"},"maxItems":8,"type":"array"},"name":{"maxLength":60,"minLength":1,"type":"string"},"price":{"maxLength":60,"minLength":1,"type":"string"}},"required":["features","name","price"],"type":"object"},"maxItems":4,"type":"array"},"release":{"additionalProperties":true,"properties":{"items":{"items":{"maxLength":160,"minLength":1,"type":"string"},"maxItems":6,"type":"array"},"title":{"maxLength":160,"type":"string"}},"type":"object"}},"type":"object"},"shortName":{"description":"The short form the brand uses, such as GT or BSMNT, or the name itself for one-word brands. Shown when no logo is available.","maxLength":8,"minLength":1,"type":"string"},"socialHandle":{"pattern":"^(?:@[A-Za-z0-9_.]{1,60})?$","x-glyphfield-format":"social-handle","maxLength":64,"type":"string"},"sourceNotes":{"description":"Where the identity facts came from.","items":{"maxLength":400,"minLength":1,"type":"string"},"maxItems":48,"type":"array"},"strategy":{"additionalProperties":true,"properties":{"challenge":{"maxLength":2000,"type":"string"},"concept":{"description":"The central idea.","maxLength":2000,"type":"string"},"outcome":{"maxLength":2000,"type":"string"},"personality":{"items":{"maxLength":80,"minLength":1,"type":"string"},"maxItems":12,"type":"array"},"pillars":{"items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":12,"type":"array"},"promise":{"maxLength":2000,"type":"string"}},"type":"object"},"style":{"additionalProperties":true,"properties":{"borderRadius":{"maximum":64,"minimum":0,"type":"number"},"density":{"enum":["compact","comfortable","spacious"],"maxLength":40,"type":"string"},"grid":{"enum":["none","dots","lines"],"maxLength":40,"type":"string"},"imageTreatment":{"enum":["natural","monochrome","duotone"],"maxLength":40,"type":"string"},"logoScale":{"maximum":160,"minimum":40,"type":"number"}},"type":"object"},"tagline":{"maxLength":200,"type":"string"},"typeScale":{"description":"Modular type scale: size = basePx × ratio^step.","additionalProperties":true,"properties":{"basePx":{"maximum":24,"minimum":10,"type":"number"},"ratio":{"maximum":1.8,"minimum":1.067,"type":"number"},"roleSteps":{"description":"The scale step each role is set at; omitted roles use Display display, Body body, Accent lead, Code small. Steps: caption, small, body, lead, h4, h3, h2, h1, display.","additionalProperties":true,"properties":{"Display":{"enum":["caption","small","body","lead","h4","h3","h2","h1","display"],"maxLength":40,"type":"string"},"Body":{"enum":["caption","small","body","lead","h4","h3","h2","h1","display"],"maxLength":40,"type":"string"},"Accent":{"enum":["caption","small","body","lead","h4","h3","h2","h1","display"],"maxLength":40,"type":"string"},"Code":{"enum":["caption","small","body","lead","h4","h3","h2","h1","display"],"maxLength":40,"type":"string"}},"type":"object"}},"required":["basePx","ratio"],"type":"object"},"typography":{"description":"One record per role. Merged by role.","items":{"additionalProperties":true,"properties":{"family":{"maxLength":80,"minLength":1,"type":"string"},"fontId":{"description":"ID of a fonts[] record that renders this role.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"letterSpacing":{"description":"Tracking in px.","maximum":24,"minimum":-12,"type":"number"},"lineHeight":{"maximum":2.4,"minimum":0.7,"type":"number"},"opticalSize":{"description":"Fixed optical size on the opsz axis; omit for automatic optical sizing.","maximum":144,"minimum":6,"type":"number"},"role":{"enum":["Display","Body","Accent","Code"],"maxLength":40,"type":"string"},"slant":{"description":"Oblique angle in degrees, positive leans right; uses the slnt axis when the font has one.","maximum":20,"minimum":-20,"type":"number"},"textCase":{"description":"How the role is cased: as written, ALL CAPS, or Title Case.","enum":["none","uppercase","capitalize"],"maxLength":40,"type":"string"},"usage":{"maxLength":300,"type":"string"},"weight":{"maximum":900,"minimum":100,"type":"number"}},"required":["family","role","usage"],"type":"object"},"maxItems":8,"type":"array","x-glyphfield-merge-key":"role"},"values":{"items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"voice":{"additionalProperties":true,"properties":{"avoid":{"description":"Language to avoid.","items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"examples":{"description":"Before/after examples in real contexts. Replaced as a whole.","items":{"additionalProperties":true,"properties":{"avoid":{"description":"The off-brand version.","maxLength":600,"type":"string"},"context":{"description":"Where the copy appears, such as Error message.","maxLength":120,"minLength":1,"type":"string"},"write":{"description":"The on-brand version.","maxLength":600,"minLength":1,"type":"string"}},"required":["context","write"],"type":"object"},"maxItems":24,"type":"array"},"phrases":{"description":"Approved phrases.","items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"principles":{"items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":16,"type":"array"}},"type":"object"},"website":{"pattern":"^(?:https?:\\/\\/\\S+|[a-z0-9][a-z0-9.-]*\\.[a-z]{2,}(?:\\/\\S*)?)?$","x-glyphfield-format":"web-url","maxLength":200,"type":"string"}},"required":["id","name","assets","colors","typography"],"type":"object","x-glyphfield-schema-version":1},"BrandIdentityPatch":{"$id":"https://glyphfield.app/schemas/brand-identity-patch.json","$schema":"https://json-schema.org/draft/2020-12/schema","title":"Rev Pop Brands BrandIdentity merge patch","description":"Fields to change. Objects merge by key, id-keyed record arrays merge by id (typography by role, colorPairings by foreground and background), and string lists are replaced.","additionalProperties":true,"properties":{"applications":{"description":"Real applications the identity must work across.","items":{"additionalProperties":true,"properties":{"category":{"enum":["foundation","product","marketing","editorial","social","developer","event","physical"],"maxLength":40,"type":"string"},"description":{"maxLength":600,"minLength":1,"type":"string"},"format":{"description":"Size or format, such as 1600 × 1000 or 1:1 / 4:5.","maxLength":120,"minLength":1,"type":"string"},"id":{"description":"Stable record ID. Keep it unchanged when editing.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"name":{"maxLength":120,"minLength":1,"type":"string"}},"required":["category","description","format","id","name"],"type":"object"},"maxItems":48,"type":"array","x-glyphfield-merge-key":"id"},"artDirection":{"additionalProperties":true,"properties":{"moodboard":{"enum":["cinematic-field","editorial-evidence","knowledge-system","modular-proof","monochrome-language","network-atlas","product-spectrum","research-wall","utility-current"],"maxLength":40,"type":"string"},"preview":{"enum":["editorial-interruption","economic-ledger","focus-window","knowledge-beam","network-horizon","programmable-field","translation-frame","unified-terminal","utility-wave"],"maxLength":40,"type":"string"},"titleMaxLines":{"maximum":2,"minimum":1,"type":"integer"}},"type":"object"},"assets":{"description":"Logos, backgrounds, textures, imagery, product and reference files.","items":{"additionalProperties":true,"properties":{"alt":{"description":"Alternative text for screen readers.","maxLength":400,"type":"string"},"attribution":{"maxLength":600,"type":"string"},"focalPoint":{"additionalProperties":true,"properties":{"x":{"maximum":1,"minimum":0,"type":"number"},"y":{"maximum":1,"minimum":0,"type":"number"}},"required":["x","y"],"type":"object"},"id":{"description":"Stable asset ID. Logo slots: mark-dark (for light surfaces), mark-light (for dark surfaces), wordmark, wordmark-light, mark-mono.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"label":{"maxLength":200,"minLength":1,"type":"string"},"license":{"maxLength":400,"type":"string"},"path":{"description":"A data: URL or a root-relative path served by this Rev Pop Brands origin. Remote http(s) URLs are never fetched; add files with identity.asset.add instead.","pattern":"^(?:$|data:[^,]*,|\\/(?!\\/))","x-glyphfield-format":"local-file","maxLength":7000000,"minLength":1,"type":"string"},"redistribution":{"enum":["bundled","original","research-only","url-only"],"maxLength":40,"type":"string"},"sourceOwner":{"maxLength":200,"type":"string"},"sourceUrl":{"description":"Where the asset came from. Recorded only; never fetched.","pattern":"^(?:https?:\\/\\/\\S+|[a-z0-9][a-z0-9.-]*\\.[a-z]{2,}(?:\\/\\S*)?)?$","x-glyphfield-format":"web-url","maxLength":2000,"type":"string"},"surface":{"description":"The surface the asset is designed for: a dark mark sits on light surfaces.","enum":["light","dark","any"],"maxLength":40,"type":"string"},"tags":{"items":{"maxLength":60,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"type":{"enum":["background","icon","image","logo","motion","product","proof","reference","texture"],"maxLength":40,"type":"string"},"usage":{"maxLength":600,"type":"string"}},"required":["id","label","path","surface","type"],"type":"object"},"maxItems":160,"type":"array","x-glyphfield-merge-key":"id"},"audiences":{"description":"Who the brand addresses.","items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"builtIn":{"description":"Managed by Rev Pop Brands; ignored on apply.","type":"boolean"},"colorPairings":{"description":"Foreground/background color pairs intended for text or icons. Merged by foreground and background.","items":{"additionalProperties":true,"properties":{"background":{"pattern":"^[a-z][a-z0-9-]{0,39}$","x-glyphfield-format":"color-id","maxLength":40,"minLength":1,"type":"string"},"foreground":{"pattern":"^[a-z][a-z0-9-]{0,39}$","x-glyphfield-format":"color-id","maxLength":40,"minLength":1,"type":"string"},"level":{"description":"AA needs 4.5:1 for text; AA-large needs 3:1 for large display text and icons.","enum":["AA","AA-large"],"maxLength":40,"type":"string"},"usage":{"maxLength":200,"minLength":1,"type":"string"}},"required":["background","foreground","usage"],"type":"object"},"maxItems":32,"type":"array","x-glyphfield-merge-key":"foreground+background"},"colorSystem":{"description":"Semantic light and dark color roles and per-color OKLCH scale settings. Role values are color refs: a colors[].id such as \"ink\" or one of its scale steps such as \"ink.700\" (steps 50, 100 … 900, 950). Omitted roles are derived from the palette.","additionalProperties":true,"properties":{"dark":{"description":"Role overrides for dark mode.","additionalProperties":true,"properties":{"background":{"description":"Page canvas behind everything","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"surface":{"description":"Cards, panels, inputs and menus","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"surface-muted":{"description":"Quiet fills, hover rows and table headers","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"foreground":{"description":"Body text, headings and icons","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"foreground-muted":{"description":"Secondary text, hints and metadata","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"border":{"description":"Dividers, outlines and input borders","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"primary":{"description":"Primary actions, selection and links","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"primary-foreground":{"description":"Text and icons on primary","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"focus":{"description":"Keyboard focus outline","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"positive":{"description":"Success and healthy states","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"caution":{"description":"Warnings that need attention","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"negative":{"description":"Errors and destructive actions","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"}},"type":"object"},"light":{"description":"Role overrides for light mode.","additionalProperties":true,"properties":{"background":{"description":"Page canvas behind everything","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"surface":{"description":"Cards, panels, inputs and menus","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"surface-muted":{"description":"Quiet fills, hover rows and table headers","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"foreground":{"description":"Body text, headings and icons","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"foreground-muted":{"description":"Secondary text, hints and metadata","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"border":{"description":"Dividers, outlines and input borders","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"primary":{"description":"Primary actions, selection and links","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"primary-foreground":{"description":"Text and icons on primary","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"focus":{"description":"Keyboard focus outline","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"positive":{"description":"Success and healthy states","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"caution":{"description":"Warnings that need attention","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"},"negative":{"description":"Errors and destructive actions","pattern":"^[a-z][a-z0-9-]{0,39}(?:\\.(?:50|100|200|300|400|500|600|700|800|900|950))?$","x-glyphfield-format":"color-ref","maxLength":48,"minLength":1,"type":"string"}},"type":"object"},"scales":{"description":"Per-color scale settings. Merged by id.","items":{"additionalProperties":true,"properties":{"anchor":{"description":"Snap the nearest step to the exact palette HEX (default true).","type":"boolean"},"chroma":{"description":"Chroma as a percentage of the palette color (default 100).","maximum":200,"minimum":0,"type":"number"},"darkest":{"description":"OKLCH lightness of step 950 (default 0.22).","maximum":0.5,"minimum":0,"type":"number"},"hueShift":{"description":"Hue rotation in degrees from step 50 to step 950 (default 0).","maximum":90,"minimum":-90,"type":"number"},"id":{"description":"The colors[].id this scale belongs to.","pattern":"^[a-z][a-z0-9-]{0,39}$","x-glyphfield-format":"color-id","maxLength":40,"minLength":1,"type":"string"},"lightest":{"description":"OKLCH lightness of step 50 (default 0.975).","maximum":1,"minimum":0.5,"type":"number"}},"required":["id"],"type":"object"},"maxItems":32,"type":"array","x-glyphfield-merge-key":"id"}},"type":"object"},"colors":{"description":"Semantic colors.","items":{"additionalProperties":true,"properties":{"hex":{"description":"Six-digit HEX such as #1A2B3C.","pattern":"^#[0-9A-Fa-f]{6}$","x-glyphfield-format":"hex","maxLength":7,"minLength":7,"type":"string"},"id":{"description":"Token-safe semantic ID. Rev Pop Brands tools read ink, paper, muted and emphasis; success, warning, progress and error are optional extensions.","pattern":"^[a-z][a-z0-9-]{0,39}$","x-glyphfield-format":"color-id","maxLength":40,"minLength":1,"type":"string"},"name":{"maxLength":60,"minLength":1,"type":"string"},"proportion":{"description":"Approximate share of visual space in percent.","maximum":100,"minimum":0,"type":"number"},"role":{"description":"What the color is for.","maxLength":200,"type":"string"}},"required":["hex","id","name","role"],"type":"object"},"maxItems":32,"type":"array","x-glyphfield-merge-key":"id"},"contactEmail":{"pattern":"^(?:[^\\s@]+@[^\\s@]+\\.[^\\s@]+)?$","x-glyphfield-format":"email","maxLength":254,"type":"string"},"customers":{"description":"Customer or client names the brand publishes. Keep proof statements in proof.","items":{"maxLength":120,"minLength":1,"type":"string"},"maxItems":48,"type":"array"},"description":{"maxLength":600,"type":"string"},"dossier":{"additionalProperties":true,"properties":{"applications":{"items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"color":{"maxLength":2000,"type":"string"},"graphicDevice":{"maxLength":2000,"type":"string"},"imagery":{"maxLength":2000,"type":"string"},"layout":{"maxLength":2000,"type":"string"},"logo":{"maxLength":2000,"type":"string"},"motion":{"maxLength":2000,"type":"string"},"personality":{"maxLength":2000,"type":"string"},"premise":{"maxLength":2000,"type":"string"},"prohibited":{"description":"Do-not rules.","items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"provenance":{"maxLength":2000,"type":"string"},"renderingRecipe":{"items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"typography":{"maxLength":2000,"type":"string"}},"type":"object"},"fonts":{"description":"Font files stored with the identity.","items":{"additionalProperties":true,"properties":{"family":{"maxLength":80,"minLength":1,"type":"string"},"fileName":{"maxLength":200,"minLength":1,"type":"string"},"format":{"enum":["opentype","truetype","woff","woff2"],"maxLength":40,"type":"string"},"id":{"description":"Stable record ID. Keep it unchanged when editing.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"label":{"maxLength":120,"minLength":1,"type":"string"},"license":{"description":"License or usage terms, such as OFL-1.1.","maxLength":400,"type":"string"},"path":{"description":"A data: URL or a root-relative path served by this origin. Add font files with identity.font.add.","pattern":"^(?:$|data:[^,]*,|\\/(?!\\/))","x-glyphfield-format":"local-file","maxLength":7000000,"minLength":1,"type":"string"},"sourceUrl":{"pattern":"^(?:https?:\\/\\/\\S+|[a-z0-9][a-z0-9.-]*\\.[a-z]{2,}(?:\\/\\S*)?)?$","x-glyphfield-format":"web-url","maxLength":2000,"type":"string"},"style":{"enum":["italic","normal"],"maxLength":40,"type":"string"},"weight":{"maximum":1000,"minimum":1,"type":"number"},"weightMax":{"maximum":1000,"minimum":1,"type":"number"},"weightMin":{"maximum":1000,"minimum":1,"type":"number"}},"required":["family","fileName","format","id","label","path","style","weight"],"type":"object"},"maxItems":24,"type":"array","x-glyphfield-merge-key":"id"},"graphicDevice":{"description":"The brand asset that stands in as the graphic device on brand book pages and brand elements; without one, a quiet field in brand colors.","additionalProperties":true,"properties":{"assetId":{"description":"ID of an asset from assets when source is asset.","maxLength":120,"type":"string"},"source":{"description":"Always asset; the frame is filled with the asset named by assetId.","enum":["glyphs","asset"],"maxLength":40,"type":"string"}},"type":"object"},"graphicSystem":{"additionalProperties":true,"properties":{"composition":{"maxLength":2000,"type":"string"},"description":{"maxLength":2000,"type":"string"},"device":{"description":"The one recognizable graphic device.","maxLength":200,"type":"string"},"imageDirection":{"maxLength":2000,"type":"string"},"pattern":{"enum":["blocks","brackets","burst","circuit","flow","grid","none","orbit","rays","steps","wave"],"maxLength":40,"type":"string"},"rules":{"items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":24,"type":"array"}},"type":"object"},"greetings":{"description":"Short words used by motion and language specimens.","items":{"maxLength":120,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"id":{"description":"Project ID. Managed by Rev Pop Brands; it cannot be changed on apply.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"kind":{"description":"Managed by Rev Pop Brands; ignored on apply.","enum":["template","example","custom"],"maxLength":40,"type":"string"},"mission":{"maxLength":600,"type":"string"},"motion":{"description":"Named motion behaviors.","items":{"additionalProperties":true,"properties":{"curve":{"description":"CSS easing such as cubic-bezier(0.2, 0.8, 0.2, 1).","maxLength":120,"minLength":1,"type":"string"},"description":{"maxLength":600,"type":"string"},"durationMs":{"maximum":60000,"minimum":0,"type":"integer"},"id":{"description":"Stable record ID. Keep it unchanged when editing.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"name":{"maxLength":120,"minLength":1,"type":"string"},"previewPath":{"pattern":"^(?:$|data:[^,]*,|\\/(?!\\/))","x-glyphfield-format":"local-file","maxLength":7000000,"type":"string"}},"required":["curve","durationMs","id","name"],"type":"object"},"maxItems":24,"type":"array","x-glyphfield-merge-key":"id"},"name":{"maxLength":80,"minLength":1,"type":"string"},"positioning":{"maxLength":600,"type":"string"},"presetFingerprint":{"description":"Managed by Rev Pop Brands; ignored on apply.","maxLength":80,"type":"string"},"productDetails":{"description":"One-line summaries for products. Replaced as a whole.","items":{"additionalProperties":true,"properties":{"name":{"description":"A name from products.","maxLength":120,"minLength":1,"type":"string"},"summary":{"description":"One plain line that says what the product does.","maxLength":240,"minLength":1,"type":"string"}},"required":["name","summary"],"type":"object"},"maxItems":48,"type":"array"},"products":{"items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":48,"type":"array"},"proof":{"description":"Verifiable proof statements such as published metrics. Customer names go in customers.","items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":48,"type":"array"},"proofAssets":{"description":"Customer or partner marks used as proof.","items":{"additionalProperties":true,"properties":{"alt":{"description":"Alternative text for screen readers.","maxLength":400,"type":"string"},"attribution":{"maxLength":600,"type":"string"},"focalPoint":{"additionalProperties":true,"properties":{"x":{"maximum":1,"minimum":0,"type":"number"},"y":{"maximum":1,"minimum":0,"type":"number"}},"required":["x","y"],"type":"object"},"id":{"description":"Stable asset ID. Logo slots: mark-dark (for light surfaces), mark-light (for dark surfaces), wordmark, wordmark-light, mark-mono.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"label":{"maxLength":200,"minLength":1,"type":"string"},"license":{"maxLength":400,"type":"string"},"path":{"description":"A data: URL or a root-relative path served by this Rev Pop Brands origin. Remote http(s) URLs are never fetched; add files with identity.asset.add instead.","pattern":"^(?:$|data:[^,]*,|\\/(?!\\/))","x-glyphfield-format":"local-file","maxLength":7000000,"minLength":1,"type":"string"},"redistribution":{"enum":["bundled","original","research-only","url-only"],"maxLength":40,"type":"string"},"sourceOwner":{"maxLength":200,"type":"string"},"sourceUrl":{"description":"Where the asset came from. Recorded only; never fetched.","pattern":"^(?:https?:\\/\\/\\S+|[a-z0-9][a-z0-9.-]*\\.[a-z]{2,}(?:\\/\\S*)?)?$","x-glyphfield-format":"web-url","maxLength":2000,"type":"string"},"surface":{"description":"The surface the asset is designed for: a dark mark sits on light surfaces.","enum":["light","dark","any"],"maxLength":40,"type":"string"},"tags":{"items":{"maxLength":60,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"type":{"enum":["background","icon","image","logo","motion","product","proof","reference","texture"],"maxLength":40,"type":"string"},"usage":{"maxLength":600,"type":"string"}},"required":["id","label","path","surface","type"],"type":"object"},"maxItems":64,"type":"array","x-glyphfield-merge-key":"id"},"references":{"description":"Research records with provenance.","items":{"additionalProperties":true,"properties":{"assetId":{"description":"Stable record ID. Keep it unchanged when editing.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"capturedAt":{"maxLength":40,"type":"string"},"category":{"enum":["campaign","concept","material","motion","official"],"maxLength":40,"type":"string"},"id":{"description":"Stable record ID. Keep it unchanged when editing.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"intendedUse":{"maxLength":600,"type":"string"},"owner":{"maxLength":200,"type":"string"},"redistribution":{"enum":["bundled","original","research-only","url-only"],"maxLength":40,"type":"string"},"sourceUrl":{"pattern":"^(?:https?:\\/\\/\\S+|[a-z0-9][a-z0-9.-]*\\.[a-z]{2,}(?:\\/\\S*)?)?$","x-glyphfield-format":"web-url","maxLength":2000,"type":"string"},"status":{"enum":["captured","planned","reviewed"],"maxLength":40,"type":"string"},"title":{"maxLength":200,"minLength":1,"type":"string"}},"required":["category","id","intendedUse","owner","redistribution","sourceUrl","status","title"],"type":"object"},"maxItems":64,"type":"array","x-glyphfield-merge-key":"id"},"removedAssetIds":{"description":"IDs of shipped or generated assets removed on purpose; they stay gone after a reload.","items":{"maxLength":120,"minLength":1,"type":"string"},"maxItems":200,"type":"array"},"revision":{"description":"Managed by Rev Pop Brands; ignored on apply.","maximum":1000000,"minimum":0,"type":"integer"},"samples":{"description":"Sample content templates use instead of placeholders. Samples, not claims about real people.","additionalProperties":true,"properties":{"actions":{"description":"Short product actions for command menus, checklists and dialogs, such as \"Refund a payment\".","items":{"maxLength":80,"minLength":1,"type":"string"},"maxItems":12,"type":"array"},"code":{"description":"A real request, command or snippet from the brand's docs.","additionalProperties":true,"properties":{"label":{"description":"Such as POST /v1/payment_intents.","maxLength":120,"type":"string"},"snippet":{"maxLength":1200,"type":"string"}},"type":"object"},"event":{"additionalProperties":true,"properties":{"date":{"maxLength":40,"type":"string"},"location":{"maxLength":80,"type":"string"},"name":{"maxLength":120,"type":"string"},"time":{"maxLength":40,"type":"string"}},"type":"object"},"install":{"description":"The install or getting-started command from the brand's docs.","maxLength":200,"type":"string"},"metric":{"description":"One dashboard figure, shown as sample interface data.","additionalProperties":true,"properties":{"change":{"maxLength":120,"type":"string"},"label":{"maxLength":80,"type":"string"},"value":{"maxLength":40,"type":"string"}},"type":"object"},"person":{"additionalProperties":true,"properties":{"name":{"maxLength":80,"type":"string"},"role":{"maxLength":120,"type":"string"}},"type":"object"},"plans":{"description":"Published plans or engagement types. Use the brand's own prices; never invent them.","items":{"additionalProperties":true,"properties":{"features":{"items":{"maxLength":120,"minLength":1,"type":"string"},"maxItems":8,"type":"array"},"name":{"maxLength":60,"minLength":1,"type":"string"},"price":{"maxLength":60,"minLength":1,"type":"string"}},"required":["features","name","price"],"type":"object"},"maxItems":4,"type":"array"},"release":{"additionalProperties":true,"properties":{"items":{"items":{"maxLength":160,"minLength":1,"type":"string"},"maxItems":6,"type":"array"},"title":{"maxLength":160,"type":"string"}},"type":"object"}},"type":"object"},"shortName":{"description":"The short form the brand uses, such as GT or BSMNT, or the name itself for one-word brands. Shown when no logo is available.","maxLength":8,"minLength":1,"type":"string"},"socialHandle":{"pattern":"^(?:@[A-Za-z0-9_.]{1,60})?$","x-glyphfield-format":"social-handle","maxLength":64,"type":"string"},"sourceNotes":{"description":"Where the identity facts came from.","items":{"maxLength":400,"minLength":1,"type":"string"},"maxItems":48,"type":"array"},"strategy":{"additionalProperties":true,"properties":{"challenge":{"maxLength":2000,"type":"string"},"concept":{"description":"The central idea.","maxLength":2000,"type":"string"},"outcome":{"maxLength":2000,"type":"string"},"personality":{"items":{"maxLength":80,"minLength":1,"type":"string"},"maxItems":12,"type":"array"},"pillars":{"items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":12,"type":"array"},"promise":{"maxLength":2000,"type":"string"}},"type":"object"},"style":{"additionalProperties":true,"properties":{"borderRadius":{"maximum":64,"minimum":0,"type":"number"},"density":{"enum":["compact","comfortable","spacious"],"maxLength":40,"type":"string"},"grid":{"enum":["none","dots","lines"],"maxLength":40,"type":"string"},"imageTreatment":{"enum":["natural","monochrome","duotone"],"maxLength":40,"type":"string"},"logoScale":{"maximum":160,"minimum":40,"type":"number"}},"type":"object"},"tagline":{"maxLength":200,"type":"string"},"typeScale":{"description":"Modular type scale: size = basePx × ratio^step.","additionalProperties":true,"properties":{"basePx":{"maximum":24,"minimum":10,"type":"number"},"ratio":{"maximum":1.8,"minimum":1.067,"type":"number"},"roleSteps":{"description":"The scale step each role is set at; omitted roles use Display display, Body body, Accent lead, Code small. Steps: caption, small, body, lead, h4, h3, h2, h1, display.","additionalProperties":true,"properties":{"Display":{"enum":["caption","small","body","lead","h4","h3","h2","h1","display"],"maxLength":40,"type":"string"},"Body":{"enum":["caption","small","body","lead","h4","h3","h2","h1","display"],"maxLength":40,"type":"string"},"Accent":{"enum":["caption","small","body","lead","h4","h3","h2","h1","display"],"maxLength":40,"type":"string"},"Code":{"enum":["caption","small","body","lead","h4","h3","h2","h1","display"],"maxLength":40,"type":"string"}},"type":"object"}},"required":["basePx","ratio"],"type":"object"},"typography":{"description":"One record per role. Merged by role.","items":{"additionalProperties":true,"properties":{"family":{"maxLength":80,"minLength":1,"type":"string"},"fontId":{"description":"ID of a fonts[] record that renders this role.","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,119}$","x-glyphfield-format":"record-id","maxLength":120,"minLength":1,"type":"string"},"letterSpacing":{"description":"Tracking in px.","maximum":24,"minimum":-12,"type":"number"},"lineHeight":{"maximum":2.4,"minimum":0.7,"type":"number"},"opticalSize":{"description":"Fixed optical size on the opsz axis; omit for automatic optical sizing.","maximum":144,"minimum":6,"type":"number"},"role":{"enum":["Display","Body","Accent","Code"],"maxLength":40,"type":"string"},"slant":{"description":"Oblique angle in degrees, positive leans right; uses the slnt axis when the font has one.","maximum":20,"minimum":-20,"type":"number"},"textCase":{"description":"How the role is cased: as written, ALL CAPS, or Title Case.","enum":["none","uppercase","capitalize"],"maxLength":40,"type":"string"},"usage":{"maxLength":300,"type":"string"},"weight":{"maximum":900,"minimum":100,"type":"number"}},"required":["family","role","usage"],"type":"object"},"maxItems":8,"type":"array","x-glyphfield-merge-key":"role"},"values":{"items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":24,"type":"array"},"voice":{"additionalProperties":true,"properties":{"avoid":{"description":"Language to avoid.","items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"examples":{"description":"Before/after examples in real contexts. Replaced as a whole.","items":{"additionalProperties":true,"properties":{"avoid":{"description":"The off-brand version.","maxLength":600,"type":"string"},"context":{"description":"Where the copy appears, such as Error message.","maxLength":120,"minLength":1,"type":"string"},"write":{"description":"The on-brand version.","maxLength":600,"minLength":1,"type":"string"}},"required":["context","write"],"type":"object"},"maxItems":24,"type":"array"},"phrases":{"description":"Approved phrases.","items":{"maxLength":300,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"principles":{"items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":16,"type":"array"}},"type":"object"},"website":{"pattern":"^(?:https?:\\/\\/\\S+|[a-z0-9][a-z0-9.-]*\\.[a-z]{2,}(?:\\/\\S*)?)?$","x-glyphfield-format":"web-url","maxLength":200,"type":"string"}},"type":"object","x-glyphfield-schema-version":1},"ErrorEnvelope":{"additionalProperties":false,"properties":{"error":{"additionalProperties":false,"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}},"required":["code","field","message"],"type":"object"},"schemaVersion":{"const":1}},"required":["error","schemaVersion"],"type":"object"}}},"info":{"description":"Discover Rev Pop Brands labs, shaders, identities, generation contracts, and the programmatic Studio browser API from one agent-readable interface.","title":"Rev Pop Brands Agent API","version":"0.3.0"},"openapi":"3.1.0","paths":{"/api/agent":{"get":{"responses":{"200":{"description":"Agent manifest and generation contract"}},"summary":"Discover the Rev Pop Brands agent API"}},"/api/brand/kit":{"get":{"responses":{"200":{"description":"Brand kit text formats and request contract"}},"summary":"Read the brand kit contract"},"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"format":{"enum":["dtcg","css","tailwind","markdown"],"type":"string"},"identity":{"$ref":"#/components/schemas/BrandIdentity"}},"required":["format","identity"],"type":"object"}}},"required":true},"responses":{"200":{"description":"W3C DTCG JSON, CSS custom properties, a Tailwind v4 @theme block, or brand.md"},"400":{"description":"Structured validation error naming the first invalid identity path"},"413":{"description":"Request body exceeds 5 MB"},"415":{"description":"Content-Type must be application/json"}},"summary":"Render one brand kit file from an identity"}},"/api/brand/validate":{"get":{"responses":{"200":{"description":"BrandIdentity JSON Schema, merge-patch schema, merge rules, logo slots, and an example"}},"summary":"Read the BrandIdentity source contract"},"post":{"requestBody":{"content":{"application/json":{"examples":{"patch":{"value":{"identity":{"colors":[{"hex":"#0B0B0C","id":"ink"},{"hex":"#C6FF3D","id":"emphasis","name":"Signal lime","proportion":10,"role":"Primary action and focus"}],"tagline":"Fast, careful tools for small teams.","voice":{"examples":[{"avoid":"Oops! Something went wrong.","context":"Error message","write":"That did not save. Check your connection and try again."}]}},"mode":"patch"}}},"schema":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"$ref":"#/components/schemas/BrandIdentity"},{"$ref":"#/components/schemas/BrandIdentityPatch"}]},"mode":{"enum":["full","patch"],"type":"string"}},"required":["identity"],"type":"object"}}},"required":true},"responses":{"200":{"description":"{ ok, issues, identity, health, schemaVersion }; invalid source returns ok false with path-level issues"},"400":{"description":"Malformed request envelope or unknown top-level field"},"413":{"description":"Request body exceeds 5 MB"},"415":{"description":"Content-Type must be application/json"}},"summary":"Validate and normalize BrandIdentity source without storing it"}},"/api/catalog":{"get":{"responses":{"200":{"description":"Studio tool catalog"}},"summary":"List Studio tools and resource URLs"}},"/api/elements":{"get":{"responses":{"200":{"description":"Brand element taxonomy"}},"summary":"List brand elements and generation metadata"}},"/api/generate":{"get":{"responses":{"200":{"description":"Generation schema and examples"}},"summary":"Read the generation contract"},"post":{"requestBody":{"content":{"application/json":{"examples":{"background":{"value":{"identity":{"preset":"gt"},"kind":"background","output":"json","settings":{"colorA":"#FFFFFF","colorB":"#181818","colorC":"#737373","height":630,"pattern":"dots","patternOpacity":12,"surfaceDepth":68,"surfaceMaterial":"woven-wire","surfaceMetallic":90,"surfaceOpenArea":62,"surfaceRoughness":24,"surfaceScale":38,"logoOpacity":100,"logoX":0,"logoY":0,"style":"grain-gradient","width":1200}}},"brief":{"value":{"elementId":"email-signature","identity":{"name":"Acme","preset":"custom","tagline":"Tools for careful teams.","website":"acme.test"},"kind":"element-brief"}},"designSequence":{"value":{"backgroundColor":"#111216","effect":{"background":"#111216","foreground":"#F5F5F2","kind":"bayer","opacity":0.76},"export":{"fps":30,"quality":"best","width":1920},"identity":{"preset":"gt"},"includeBrandMark":true,"kind":"design-sequence","ratio":"wide","sequence":{"cutCount":10,"finalHoldMs":5000,"pace":"accelerating"},"shader":{"materialId":"paper-gem-smoke","shaderSize":1},"texts":[{"value":"Open Source","weight":500}]}},"slide":{"value":{"body":"Foundation\nExpression\nApplication\nDelivery","identity":{"preset":"gt"},"kind":"template","output":"raw","slideLayout":"agenda","template":"slides","texture":"white","title":"Code is the source of truth."}}},"schema":{"$ref":"#/components/schemas/AgentGenerationRequest"}}},"required":true},"responses":{"200":{"description":"Generated JSON artifact envelope, raw SVG, or element brief"},"400":{"description":"Structured validation error"},"413":{"description":"Request body exceeds 5 MB"},"415":{"description":"Content-Type must be application/json"},"429":{"description":"Production request rate limit exceeded"}},"summary":"Generate a Rev Pop Brands artifact"}},"/api/identities":{"get":{"responses":{"200":{"description":"Built-in template, GT, and reference identity records"}},"summary":"List built-in brand identities and asset IDs"}},"/api/labs":{"get":{"responses":{"200":{"description":"Complete Studio lab-plugin catalog and shared-library capabilities"}},"summary":"List every Studio lab plugin available to agents"}},"/api/materials":{"get":{"responses":{"200":{"description":"Complete shader library, controls, palettes, presets, attribution, layer compatibility, per-material motion/seek/loop capabilities, and PNG frame persistence contract"}},"summary":"List every shader available for independent background and logo layers"}},"/api/og":{"get":{"parameters":[{"in":"query","name":"title","schema":{"maxLength":84,"type":"string"}},{"in":"query","name":"description","schema":{"maxLength":180,"type":"string"}},{"in":"query","name":"url","schema":{"maxLength":80,"type":"string"}},{"in":"query","name":"accent","schema":{"pattern":"^#[0-9A-Fa-f]{6}$","type":"string"}}],"responses":{"200":{"description":"1200 × 630 PNG social preview image"}},"summary":"Render a parameterized OpenGraph image"}},"/api/og-home":{"get":{"responses":{"200":{"description":"1200 × 630 PNG home-page social preview image"}},"summary":"Render the canonical home-page OpenGraph image"}},"/api/search":{"get":{"parameters":[{"in":"query","name":"query","required":true,"schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"description":"Ranked documentation search results"}},"summary":"Search the processed Rev Pop Brands documentation corpus"}},"/api/github-stars":{"get":{"responses":{"200":{"description":"Current public repository star count and update timestamp"},"503":{"description":"Star count is temporarily unavailable"}},"summary":"Read the optional repository star count used by product chrome"}},"/api/surface-textures/{assetId}/{map}":{"get":{"parameters":[{"in":"path","name":"assetId","required":true,"schema":{"type":"string"}},{"in":"path","name":"map","required":true,"schema":{"enum":["color","displacement","metalness","normal","roughness"],"type":"string"}}],"responses":{"200":{"description":"Allowlisted CC0 texture map with provider and license headers"},"404":{"description":"Unknown asset, map type, or unavailable map"},"502":{"description":"Allowlisted upstream provider is unavailable"}},"summary":"Fetch an allowlisted open-surface texture map"}},"/api/docs/{slug}":{"get":{"parameters":[{"in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"One documentation page as processed Markdown"},"404":{"description":"Documentation page not found"}},"summary":"Read one documentation page as Markdown"}},"/llms-full.txt":{"get":{"responses":{"200":{"description":"Complete concatenated Rev Pop Brands documentation corpus"}},"summary":"Load the complete agent-readable documentation corpus"}},"/llms.txt":{"get":{"responses":{"200":{"description":"Concise agent router and operating contract"}},"summary":"Load concise agent instructions"}},"/openapi.json":{"get":{"responses":{"200":{"description":"This OpenAPI 3.1 contract"}},"summary":"Read the machine-readable HTTP API contract"}},"/og/docs/{slug}/image.png":{"get":{"parameters":[{"in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"1200 × 630 PNG documentation social preview image"},"404":{"description":"Documentation page not found"}},"summary":"Render the canonical OpenGraph image for one documentation page"}}}}