{
  "openapi": "3.1.1",
  "info": {
    "title": "Node Compositor for Images and Short Clips API",
    "version": "1.0.0",
    "summary": "Run a node graph — keying, grading, LUTs, masks, merges — on images or a short clip.",
    "description": "Every endpoint performs the same calculation as the human page and returns inputs, result, units, assumptions, sources, warnings and computedAt. MCP endpoint: /mcp."
  },
  "servers": [
    {
      "url": "https://luminacompositor.usefulweb.app"
    }
  ],
  "paths": {
    "/api/v1/calculate": {
      "post": {
        "operationId": "calculate",
        "summary": "Run a node graph — keying, grading, LUTs, masks, merges — on images or a short clip.",
        "description": "Evaluates a Lumina compositor graph (or a preset: green-screen composite, product shot on a gradient, LUT grade, sky replacement) on your images in linear light with premultiplied alpha. Porter–Duff merges with W3C blend modes, chroma/luma/difference keys, .cube LUTs, masks and filters; returns the result and a report for every node. Short clips are processed frame by frame.\n\nMethodology:\n- Uploads are decoded to 8-bit sRGB (auto-oriented), converted to linear light with the IEC 61966-2-1 transfer function and premultiplied by alpha; every node output is one Float32 RGBA (or mask) buffer at the canvas size (0 = size of the main image). Image input nodes fit their slot image with Catmull-Rom resampling (pre-blurred when shrinking).\n- The graph is validated first (unknown types, parameter ranges, missing inputs, image/mask type mismatches, cycles, exactly one Output node) and evaluated in dependency order; identical sub-graphs are evaluated once (content-hash cache).\n- Merge implements the W3C Compositing and Blending formulas: Cs′ = (1 − αb)·Cs + αb·B(Cb, Cs), co = αs·Fa·Cs′ + αb·Fb·Cb with Porter–Duff fractions Fa/Fb; blend functions see un-premultiplied colour in linear light or sRGB values (your choice). Colour nodes un-premultiply first; levels, curves, HSL, ASC CDL and LUTs work on sRGB-encoded values, exposure, white balance and vignette in linear light.\n- The chroma key is a balanced colour-difference keyer: α = 1 − gain·m(C)/m(K) with m = dominant channel − balanced mix of the other two, then the backing colour is un-mixed (α·F = C − (1 − α)·K) and spill limited. Text nodes are drawn with DejaVu fonts by ImageMagick on the server (system fonts in the browser).\n- Clips (up to 10 s) are decoded by ffmpeg to RGBA frames, the graph runs per frame (nodes that do not depend on the clip are evaluated once), and the frames are encoded as H.264 MP4 with the original audio as AAC. Video has no alpha channel: transparent results are shown on black.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "lumina_compositor",
        "x-owner-app": "lumina",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LuminaCompositorInput"
              },
              "examples": {
                "example1": {
                  "summary": "Green-screen plate over a new background (synthetic sample)",
                  "value": {
                    "image": {
                      "filename": "green-screen-plate.png",
                      "contentType": "image/png",
                      "contentBase64": "iVBORw0KGgoAAAANSUhEUgAAAMAAAACACAYAAABdhGZrAAAH8ElEQVR42u2d2W9UZRjGvdRLvfFOEuOFMTHqnRcSyyYgQkG2lqVYKi2U4kynG+00sggSSFiMCGJgls5MZ+0sLZS2U1q2QoFSlgKCWCrKpv/EY94JiRFE6Kznm++5+CWky8x33uf5lTmdc76+9FKsAIRoC4dAKAAhFIAQCkAIBSCEAhBCAQihAIRQAEIoACEUgBAKQAgFIIQCEEIBCKEAhFAAQigAIRSAEApACAUg//BKrACfRT9FaaQQlZF5CVZG5mB2dGbic5wRBcgrZkdnYUvbcriClejxW3De14gLvvUY8jfgor8ewwnqMOyvxbC/Bn2BKviDZdjeVoR50ZmcIQVQjzdjU/BNqARhXzUGPFacabVi0NuEc96m5wow7Ldg2CdU46LXjE5/BbaHivBWbDJnSwGMzdvRqdgZ+BJxdyNOuq047bGmLMBQqxkXWs043boOe4PL8E50CmdNAYxHc3A5Ol0NON7SjBOu5rQLcN5jwjm3Cf2eKmwOLubMKYAxmBiZAVtrFY45rehzWjMuwKDLhDMtZni8ZSiIfsIMKEDuKGubj1hLHY45rFkXYKDFjC5XFSra5jILCpB9zMEixO2N6LU35UyAU04zTjqqURtawEwoQDbLvxhxWyPi9iZDCHDCYUFNcCGzoQBZeNkT+hw9tvWGE6DfbsGXbfOYEQXIHB9FpiPqsCBuQAGO2y3ocH6FiZHpzIoCZIaD7tWI2xoMK0CfvQY2TzmzogDppzFQ/Lj8xhbgmK0WTYFiZkYB0seE2GS0O6qVEaDdYcYbvHSCAqSLbb4S9NrqlRGg11aHb30lzI4CpIcOR7VyAsiamR0FSJn1gaJEoVQTQNbbwHMBCpAqTvdqZQVwuCuZIQVInvejU/9VKNUEiNvq8V50GrOkAMlhCi1QXIAGVAUXMUsKkBw7fSXKC7DDV8osKUByODzlygtwiOcBFCBZ2lqqlBcg0GJilhQgOY44TcoL0O6oYZYUIDm6HdXKC9Bpr2OWFCA5eigABdCZTof6L4E6HLXMkgIkRyQPToJDTjOzpADJ4XJXKC+Aw72WWVKA5Njj/UJ5AXZ5y5glBUiO2uAi5QWwBIuYJQVIjoLIdOUF+Dgyg1lSgORpdVUqK4DHVcUMKUBqbPQvVVaADf5lzJACpMYH0WnottcoJ0CXvTaxdmZIAVJmt7dUOQF2e1cyOwqQrpPhGYmfqKoIIP9jFfDklwKkk62+EmUE2OpbzswoQPqR36oYXQCvizfAUIAMsTA8B132esMK0Gu3YHF4NrOiAJl8d7jIsALU8wZ4CpCd9wZKDCfAFv8SZkMBsscm/wrDCLA1wPJTgBzQEFyacwGa+bKHAuSS5W3zEHRZsi5Ah2cNSsNzmAEFMAa7/KuyJsAPAf6enwIYkEXhQhzyrc2YAB7/SiyJzOKsKYDBRYgUYl+gAr2t61MWYMC7DoeCJVjK4lMAFTGFF+FAsByH/dUY9Da+kAA9gUrYQitQG+afPaUAecSrsUkois6GJbIAG8PF2BZekmBTeDFqIvOxJDoLr8UmcVYUgBAKQAgFIIQCEEIBCKEAyvJ6+zRM61yG4u5KlMdrsO5YI8x9zQnk3/Ix+Zx8jXwtZ0YBlOLDw/NR0/c19p79CaFLYfTd6MfQr0O4efdn/H7/N/z16OG4kO+R75XHkMeSx5THlueQ5+LMKUDOmNA+HdbjW+C56MPJm6dw6+7NcRc8VeQ55bllDbIWWROzoQAZo65/A/zDIQzdHsLDh/ezXvjnIWuStckaZa3MjAKkvhPEqZ3ovtaD0T9uG67wz0PWLGuXY2CWFODFb3Lp34QjI0dx549R5Ur/LORY5Jjk2JgxBXiKdzvm4NB5J66MXs6b0j8LOUY5VjlmZq+5AMXdaxC53I6798byvvhPIscsxy4zoACa8UWPCZ0jXXj06IF2xX8SmYHMQmZCAfKcwqMr0XH1CP5k8Z9CZiKzkRlRgDzEfdGX1BtSuiEzkllRgDxh26lduHrnCss9TmRmMjsKoCiTjhTj6Eg3y5wiMkOZJQVQiO2nv0tcR8MCpweZpcyUAihA+HKMpc0QMlsKYNQd2nqqcPaXQRY1w8iMZdYUwEBsOrkjJ1dk6orMWmZOAQzAvsGDePDwHouZZWTmMnsKkENcQ16WMcdIBhQgBwQutbGABkGyoABZJHQpwuIZDMmEAmQBueOJhTMmkg0FyCDOIQ+LZnAkIwqQAb4/+yMLpgiSFQVII7LrAa/kVOuKUsmMAqSBuUfLMHLnKoulGJKZZEcBUkQ2hWKh1ESyowCpnPRe4Emv8ifFFzwUIBlkC0C+7s+P8wHJkgKMk4FbZ1igPEGypADjQPatYXHyC8mUArwA87tW8dLmPL2EWrKlAM9BNmtiYfITyZYC/A+re+t44pvnJ8SSMQV4BrIxE4uS30jGFOA/KO0xablHp457kpYaaRtG3uBCtL6BxgiLeL+jEDd+u85yaIJkLZlTgMfsObOfxdAMyZwC8II3XiinuwALusoxdu8OS6EZkrlkr70Ae88eYCE0RbLXXoDua3GWQVMke60FeDk2CdfHrrEMmiLZSwe0FcDcZ2URNEc6oK0A+wcPsgSasz/X+4vm8sljVzpYAs2RDmgrwOmbAyyB5kgHtBVgZGyEJdB9+5SxET0FmNlZgrF7oyyB9m+IjSa6oJ0AFb21/EvtJNEB6YJ2AjQe38wCkATShVz18G/lzkyYal7Y+gAAAABJRU5ErkJggg=="
                    },
                    "background": {
                      "filename": "evening-backdrop.png",
                      "contentType": "image/png",
                      "contentBase64": "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"
                    },
                    "preset": "green-screen",
                    "format": "png"
                  }
                },
                "example2": {
                  "summary": "Sky replacement with a luma key and a generated evening sky",
                  "value": {
                    "image": {
                      "filename": "bright-sky-landscape.png",
                      "contentType": "image/png",
                      "contentBase64": "iVBORw0KGgoAAAANSUhEUgAAAMAAAACACAYAAABdhGZrAAAk70lEQVR42u1d6XpU15Wtx+qAEJRq1CyE0WBNaCgJB4ifJDaQLw4Jjh07wcTJu3R3ekwndub+rUeo/s69Z1h7OvcWIVPX+bE/GxuVbp271z57XLvzz7+6nhYpMq/S+ZdfXU+LFJlXKQAoUgBQpEgBQJEi8wiAf/319bRIkXmVAoAiBQBFihQAFClSAFCkyJwB4Be/vp4WKTKv0vnFV9fTIkXmVQoAihQAFCkytwD4t6+up0WKzKsUABQpAChSZH4B8PX1tEiReZXOv399PS1SZF6lAKBIAUCRIgUARYoUABQpMmcA+I/fXE+LFJlXKQAoUgBQpEgBQJEi8wiA//zN9bRIkXmVAoAiBQBFiswvAH57PS1SZF6lAKDIfAPgv357PS1SZF6lAKBIAUCRIgUARYrMIwD++3fX0yJF5lUKAIoUABQpUgBQpEgBQJEicwaAX/7uelqkyLxK55e/v54WKTKvUgBQpACgSJG5BcD//P56WqTIvEoBQJECgCJFCgCKFJlLAPzhelqkyLxK51d/uJ4WKTKvUgBQpACgSJECgCJF5hEAn/7sO9NPfvadchhF5hMAn3gAfPLl8+kPf/p8+us/XhcpMjciAPDx62flYJhsTvrTrcv+9O7VYLr9cDi9996wnMv/FwDsPB5P7z8aT9/55igC4OUXBQS14ve8cACMpu88Gr3137f7ZLmS8E7c73G/7+7loHqGzYvedAPE/fnlq2czAZlK/TlzDQB30AEAzrK5l+wA8INXT6c/+MnTuT2YSsEMALizcmfmFNUp7Kyf7T7HnXX6nOWo/DUAltM7eVi/E/f7g9JG8SDYsOTcydJ0PchZLWtRupWsnnanqw/uTFdO7vzDv7fqO/rvG95heHfOuH/8+jnIswCAETlsB4CXHgBOvvrjdVa+/+MPiay4w3xwp/Hn/h6lUhqvWBoAVMX91kr1T+szHWi2Hw78P/0NonzGnvsc/1kOXMEouZ91t4B7hi3FgrtnDgq+xhX8FBTcK/lyJbejuP9myt/pe+y/uzAdHtyajg4Xp+Nj+B7+e7rv7L57AEKl0188m34M4v7ccYdcH7S/biMA0i2gAYEo/edMHAj8Af7DKD5zLYilVQAQrP+eV1yqvMmNeccblyDO2ITbY8dbfPyMPfiMcAtsx1vAgyACoX5e95IrhY/KzhX+dqUk46PFSmFGh7emw8Nb1T9HR4vVf18OSuSU50E3KlAlZ91oWf+W72hp70Ylvb2b0/7+zQoEg4PwXRbjdwnfx313dw7u+Z0uv6zkWQSD+zMAYAgH3U+3QBAAwvd//DQq/gtDEJF/zUOqEH8u3YFNotj9BskDwClxsNyV0r7PFXiFuDNcoruDiv8+/Rz3/9E1rW6BqwEBQgTA2RJxY4LSOyVwiu8UwymJUxanNP39hVqB9hemA2dJD2/VSnNyu1aY0y5xJYIVDS7FX93a7y9Ml/ZuTpd2b9TiQdCD7zDwYKgAcVCDO3wnp6tRf19R6QTrrwNAB0EAQFT4z0ACAIhFuTP96k/XfzGp0B5eHLwsatH7UZFNMYFQ///tCADvunjF3ffCgZBuhQCIFar05OdXKwmfId2gYQRAiglq92fNA6BS/OOk+MHiO4UYvFsrfY8r0v7N6eBgoQJJDYBu9XnckATjseXP4i/5PlHcs7vnrqz/7g0JggiEmx7YC/5mqIH9ArwSNOJBWgHgZSsAfOCF3QIeAO4Fvc2DGQQfMFx3BgDQ6m8BAJxPHcQGQR4ASYFXvUhLnhWm/PEzBABGGQDUvr4742UPgLFh+YPyd53s1Irk/ps7SweUCgDe+vNbVJ7h4C+u/O475ACwFADgQRDE/f2gH0EfK49FA4B7oUH5wzX7Nm4Ah7rgAgWf0snXf7p+I0kvM1x3NcJHeHWf5QHAQdDuFkg/s90QA6jWX7kBdhuAITJBORfI+//VDfAguT41EGq/ONwAPVCk7m4TADKGBM7rTd9nk7jvkgAgXSBN+ftwEwTXrvEG2L7SDrYvlR8B8JOnMQDW/P8YCEM0Xqfc6pfV9hDWToNloxYNA7gY7DDLJf34nDBlV0BSpUBZFuj+47Hq4/+5ElPT743IrUwBGjJAIfuTsj0YAMdzw1tgb3YXSE8Q1M/ytpW/imkCAA79c++Dwgulr92eIAPIEL3gys9jAK0wElJrPzCCYBII/1hmgGp56hWfBlNBsgfAshpo2cYg0cXyv2cj5n71gg9JGWKABznjGPBeDojLUdcAMJUZZBQFsz2zCn4Od0fdM9HcPsvva+LPrzo7D4KBt6aoSO7P0ZVkN+ks8raU333HNQ+A6rkPFyF4pwqfgt+FGPwOYxBcp0fR9SFZIG/gO6E4Yol2bVAQPCVK7yT8f7Qi0XKw4g1HPi3WdPXUHs/1essfgl203FhBFelCL+g68aIXFQAEjx0uJXC21c8YTvHW1T5nk6U419lZ8NSkCPQnCTTrQpnqQLE3SxboDJ4B3wmKfyd/rvKvk5imDuRDHKMq/CGkQYMc1crvbsCgj5Xya3UALB5gwJrclm4WBKr4wDkqlOJScMWURZy8xJePFT9mvaNLxw4WsyU8gHbPhT0/7xCrPIhtCdpzrzPXgQSOE8N9OWeAZ6DHXD4pXuEzX/RU0Lo/u9/l/g66FAPFVeAAQJcVn0k8zzG7mY9qBXSf+fX/XreS6Gqdy/fEXV+i8EeQ+0fPANxiovyvn0E1uP73DikgQEWNAOG0ayo6F7xmQrYALSLNYvSllQPhZe2m7I7mtiAA3PcJVmUEBzn2IHC/z30mr/imTEz9efU1LYNOcXZnMp+O/voKgHHMxb+TESgUWjj3M+73IGjlM3sQhOc9uZOCYrCgI3z33ACe0laJZabkRDH9Z9b5eHBREGxgnVc1FxnPB8/miCl8eOZjpaKNbrGvAgfFd/1uQdyfO30oIgx5YOk/SAVCVHav8EG+SMrP3QAt27TJXBNefdQsfN7lGBBXI/6Os6U6swBZkfDdHRjcAbrf6X6P+zns90kV2dr6V59FlGkBCjCyEilcBVQkrzhcWbLiFcl9jnuWKkP1cEhaK0Iw7c68Ai3cAqi44Xk5AMI7154ZXZI+l/1UaLNSk6a7dabFftJAcINDvBc0Pue1QSPK/+XzuvPZdz93MBji/uAKe3khqE3WHsrKIM6/wqCRBos8wEupPOHj8oYmLTDlSs+kclmYBRxgVqHKgtyqDtb93goADwcx1RnaGhIAetXfCyk6zE7gSxY9Kidc8SEzEwpUeynFR9J8LPtRBa4etAEA7myr1CykU92zu+d251TdWv4GHHng4e3PC5f43ldiJq7+ucGBkZlRBL9LpWP+bILrGW+Btu7WiaH4hu4EQ4zK/8mXqf2/g+mwvlJckh9eo/WlAYBK+S8HxI8OACBFtwwAcoFpAlZe8e8pAKhe/uEiKQqFPLh7uasRACHXn6xpBMBFr/p74wAkyE9zQ4KuRRBSoIq5eShQQY6e572XAATuPSEAwvM6xcdiGgHuGQJgcXYAwHPHqrKQG4YkA4Fu52om3uD9TEnA1VG8lGj9PQDc96cNiOlWJwCwboA1I/OwofTW8Lw5BcHQvAHWhQu0ZGRmbKXXsjbBBbJugH5QpngD9DMAGFbPu+pvAOf6JMt9MxoRLNIRP/VYAiCkJUmlc4+V+nml893ZboBtFgcIf5q5E5oLRG+ABZFObRRoXiMGlgCgawJA61JtAgDeAKR+8wgBAN11sSKoXE8kINWqhLziqgTAWhDsbpEU/S/Fw9D6ufPKTz8ff0/ILa+gD+x99+CTrviAMvjT7/iGt50n6AINq2cOlhSLNLE70d+iQ+i0HCtZkiH4/iHHzauZfSvP7YzUMX1m0qPEYgASCD+4E6vEYyt4Z0q5yuoJ3HXTilJa3JJcw0U94D5LSrzK0t+6KOlYTI1740kGmUjtZYgAAGUIlVUl+9JWsGKoxQlqrxHLJlHl14pPNOVHKqa8ZZi1C5CUmS/+uL93l/T78BigDijduZCAGrMqB3qqbiQyOjJ7gj/PfXQR/MEzp2t+GFuu9czVUgpoT6TVtwqXmJUZs9uLK/3QaE8mAax/fh5jCkvOwQEgIfUoX5PSguCNC02Hku6kIDhcq8d1ORx9KKtIQ6qqsxTSRNqUZZJewfCCj+DDy5UVVJZVmsipKJ5iQyvDD6qy/u+NVADc8wDAgHLcRsEPOTBsBWm2yrRVoXpHkz7EXQOZaYOiGLoXWmxHCpekgNhNBTUlk6ZlES0Fx4yYEHgva9zrwO4EBQA4kLWqxAIYQ4YiZCdmQt5diKk1blmIlWWFIJ6+5F+OT4sFEelUJZjmudsQwfMxTvT1aU2Bu275aa9Y/PomAmBM2pJJcQlTdSdGGzJPcVq5d0UBaFENCoqisGbMNIAhWBdFN1a8g5iOpJsnkKoOtwBxI8EtI+0UtEq9cSEr28LPNyx4qHJzzyEAAXvT4jDWA1pn2DC6BDrR//fuzyrzhdFvItkbOBTeooBTSFbHKO3ReMYqdbXEogWmr34G4lNZ1TM5UJ73UhWRHGZtQXLxBN4wAWBB+cNkV+VSQFyxzjJX6F5hmrPflAtXin7SsucSCX2zoi4GWwKozuW8BCYwtDiqbqtImSS82eL3OU35d0yGxLYPeFaZ6kyKiz68+xyiGzDRJQDAhrE0Y4LSiXllnwt3P5B8YRk1xxI786u1KSR31X/vsw+m3/sREzc3AF16DgBo8UnFLii/V/pPQRwgkMki9r2ctPOV33mURhQ1QQDcf0T78usAvrZCavNZ7LtJOX4Ra4Vn89e0vJGU7MVjSWLAbyQxGxsVYEkM+2uKT43DIH7fDeUWGMFtFqvpXn9CNg0N6N1orOC8TpjbBwBIA+3Ppz+EYfY4tgsAsCYSNZcqSIcUVo5DNRRTgWOfCWFZhUlPKpwYxFioFP4jJ59+20sNAncTEAAopWp0e6Ly/9yLBwQCIKb5QiuB90XXTgMAvEI9wiIXCnV77j9OChcCS2toqIo1zlK7RQWAkOfH/nufdo1ZnDMaa1GL72+kx5I5IoAgZXiWZIYHMi3JokpXIP7OK9ntit93g2WSQryD1n8DM2lqNX2ofhbv4Qm3iHs29zO8heHjJgAcW0E+lQ7JKzMA6Gm1kQkAbQyPKn8tNQA+EAD4IQcAWP9POQB+zgDw6pnIc4cXs3aqZXgYFckTCYSk/NLq8oa+DdZvFAEQilw7HADYyyODNI19AmeOscqr5fjH2qwEpJWTYLv30KjbyHQy9gQRAHgwp9npMSEJCOe3YaRlBQCuDAB4o+duYA4ATPGK2IIJcYH0G+ANAAA3QF+A4C3dAAwAphIoL4a2OTClN9whjTiAzhks0RvgSL8B+gQAqQP1TQGwfZWqvOT2ywFgIod9ZOuKDYDVHADOe/QGAGMSDcjlYOYbIDyLegPAhKLWKGcWzCoAQDU09sNc8IawZZkJwcPgbbHYKehvgnwM8FQJgvEWyADgy+dmpVMGZrQqmBU2oELSrcHycz6epgGUfTl+uBGei1ni1gCABj2cniMxkOYCTdq7QNtXCgBOboOy0XPemsj2A3QhSVAduj4h7dumzXsrxGDe+i9rHaPGLYCS0qAHC3UWSHEXeBCsHQb211stvWRm2A/QpFQoS4MCCIgb9PPv6KX+ScYNiMFmLyqbHFbRK8lkXDQq/pLIAIXMk+j38W3BsVB0yAJgnqOeEQDujEK35xoGwVoWhA3ONAXAWgyAmSAea9mWW7k9sb4AdQmzDeaSvgfxLKw9W3S5GiDokMForSVAi+IhiFm1BjZYzwZKdWUZxbGXr+j0josLrCF0agV1AIQDWGWsEZszyAYvCCkD6An4i2a//KgpXRhcEIM9LnzvTzmh8RfPBD8QqSeo/VsyIOaxALG4mtVWXJc1bEG4ZIWnqwGpLWDqNtduQ7NWPfEcpK2ccANlQOCl0/XNV+6qTn3xMBiiZARiSowBQFiezEywmITSuvmiy1IrwqwAMJu9miqUzE9c1WaTtYEQHM0jVd5FMsccCkUbIdd/pdckqhTtY0qfiBkwZPR2BiNkorC7kk/O5ZgeNFcI3T6tpYRXrYmRMSfiZKGuFbep1poBc8MDYzCedLsyo9zh2YnlYxo0psMY6NfXA9mlR4pPmTnddUbpEYHkPyOk1O75jBRnYtt50gwAMUVkyfGiPnTBeHawkU5jWVMrvYpLIgtzQzA2I1aNXlZTwKkO8jwWh7Dqu2EUvgQQcJz0SpngYwWsNf6+tCpuK2aJvqw6q6Oy3WzBkcwn7FPGOBMEXjrdnW9UGYrKDfL5aTJqd2mPMa5ppezMC9auVD2oCn77EslI2QAYskyIHCUc4hWZmbQaKI1pcdQPOzf3JFlT7KlSWn75jcgDvHvK7ERTDSQAAG+BRssKrBK0NSRXCR7k3/uJMVPO+5fUtgRlhFX8LhrbpNZsfaiIt1+rreleOnccAHa+kQZDjmSBBpkL0AezAIBVvG0l64LVZNGmfJgmhjAgr+IABoDdlgAgI3z7+rRSE9dMHPEj7GrfmN7x4v49pDkHpNUhrwC8zSFbAQcAxEo4uEHhFsi6Gee2n63dAqpS4kyzIla7ss2+Ib0M093CVLtF+bh7Q07ohWwVu90jAJZYILwGSswbo6KvaQGATOPQK52X8NdwVvcQiE3fJgAOYPhEo9mLgyg6GHD0jyj/fSrd3RtpxBLayqlLAIPaX7Cep58+//MA8JoDQAGB4ETqmawabwoACYQ7ZP43Rz/TFHCPjZFSnKqL75KPqB6ZAJCZIA0AmxoA4CC0HC7pvfkm3UNAAIA3wJFxAzw2guCrTAzAfPaeYi0I1d6+Qra6L90ed2Z3EAQ7FAAjg2YkjpMaHa/ZIiD2QSku0MeQRtaV/81IwSwArLZQ+lVGt97Ev9QGACPI+vQNykcx5nuozFU4AHz0SarQDkiTVspSvAnJ1OaFNczC2pcxneXTiJi732SNeTtP9Imn1KOvAIC4QMYwtzGFNTigDAjEDdpJblBwgSLV4KHBrnHWlURNr41GQDHInRQ/ZIA05a+m7HKKz9KOpOWaxwGXeQBY/fyrylCLdAF52pVmnFJ8eMfoNKAAIDPVeykmG/AJPUh8dLA/J1RoEQCbk/ZbSawDtYpKlkUhN8mkJ1YTBYkTT5O+5P3hufgDWpTq4/ghG9tTp7m4K7WnWR3wO+Emw0FuOQshN5eIarghkeBJ6ZNfN1cj8YYwyS6HFWI0fjnDx1kZcqO0nOVjmw2pbE5onYkU3Xirzb5kve4acYD2XjvO8n/0ow9ig1oCQKic9iRduJVdyKS7ZvFLJYhkT7xWoudNWmI6yyJtOshUD0+U3L/IPFCe+oGyuSRYnxefy6EgMhFnDgZJQYvPp6T4CGFeYdkM9kRnzM5SNRqxjranoZHIbELTrcu8q8DYeRBu5JDZxBZ0buCCdEh/DgyriPL5RZ5VeRblFssXOH15lsacslhvaG6UOqKojCmysjkf5ePsaMEXpRkIdptoQ+Ew1B5uWdEOYrDtvTTHRnPbe54K1yQXqK6dchKy3BjsEiMw4GOaS1LZ1fdptZzICTSVjU5zf0hWjgbDwr31/95Jyv8BoTZv4trXlk1sqf6inEO1swEDQUKrxR8bLA4RxZGjxdaisaKtsdaByFqhsCOgolN2NEplEsQ679AeEqQNByufheVjgctKi4rGMbqqEJFtmnymPeFWSZ5Wu6ZwN9tv1ZcVZ+AHxZpOTGqA9Y9JCbwFILsnExsOAJ9J619Rm7Mpoly+OJBUxS/SVDYHF2vL6NAUrRcXPWl5oEhCFsE1VYK1AfQHdtvwJp+LfSDnYgeZQhkGZ1XMxbpiX3z+oTk7nZXP7T1tY41vVKMY5N8dqveN88XnS9m1pI0M21doOJVbnTW6EVf2Xeb/87S0AAFdqRT+vfMCrBEBwKnuz4kAhjOxtajy5qaHtOET0nukLIHQ5hFGBpkqT4PJHQPyJd4VHYiUKY1XmalfSl9KzLqxuOtty7hV+wdvZJO3QOuYDeaYtzJzzE0085sTXXdI3xU7Z6fkd5S6jAaCJVIEvREA8GEzAM57kqhKCUyz43NHs43PIQDUAXxF+ZsAsKyUw61B7HYs0+nFDNgqInwxt+//UwIBDAZ9j52/KZ+1FP/32/ZCpVStBYBeu3oCG+TPsQKSfWcCAD1CbtAEgKVZALDL6Bp3DQBoSxJUADxskePnaSwxp6sA4HHmBjAYKKwboFH5fdCLRRrCxqBkJywADK0bYIcWy2LaeZYbYAbl1wAwemMA9GcHwFUzAKwlIbkbYNR0zpry79wQsQC2wnTEcjsTABpVYYb5mXyRruiI5BNanIgq5vm5S3Xazg3iXZ48Hy82zajUKZIZIbIvxD507ga1aJjbXxDKr/n3rUGg/N3ZEgBpoTTp4GVB8OYsADDGK01XyLhp7SAYskC7cNvu2EFwTwuC+QGSvm4VALyJS+664iDQeD9xaoiMXipb0nkL9tpphkHYCPQsRuFmGr1hbN1AVjgLALzjlHDms0URL9hOte8ra6feFACqO3goF21wMiuMgcxU6EUGAKp3QEdLJRCsSjAl5h3nipJKIUxulZe7xDqYNSDr5ZVhFixMqZw1sE3lXrjmILrXmNjQ9aEMDYobdNGTO6vESKIxncZ6UtRK6EQyxBFQs2Hu2JJr1BcSDSKjQzxWUpBnckOKAAHfx2wp/zF1c0y6RoXNTcRAl0YqugUA7j2UiwTzApT2E3oLWM1wuW5Q0RKt0FF2xsZ6pLVThVqQKQldF0pZFXg6k088aSN/hKYEWChiXDFRDt+i2TvR6fYEqKHifFcAW+9gXVca+LKEtjzgZjcsXyKI7eYhiTAbAJSkgHJL4dzCqm+B5zPKYpRx0hYAs23RTIS+wzyhLwHBLbJBkm6/vNk8EOMmwvIA6NKmKQCANrTNuXUsihHCvBaVni2YfrIs2Og08lt1ashY+Mf3jdGRQGUPsEbqNAF26BnXDXES2k0+GGJUuHkgSECgKL5qLbWBIGw95zMgbBKQPxuPA5riQ6nwOgNfI+PdiU48YFFQpk09+rKXTo5DRRvk2FICV26924u9NX03uEGPqFUgjXkXcln0mtGcpbX+kr4UxSWjYKb06KusGMbHIIWVP28qJoIffElTv3HGIQ4M2VsSxSin1hHLWSoYSdddhTFD7CyeAQCW8sczZrd+GHMl5As4f6CsmuL7yiK4GzhYO2pVsBUAdMaCN5b3QSIA0A0yNqZfzLhPV6MGzFCRtFo4xwAgyKi0jZYZNrZtXks50W8bjQPHBMABbQkPQXngg1phGyfjMz2URLzIiRQ6T9sCgCu/dH3HJn9Qnn7mlrqRkq/BpYao3w4AazkAeLaCnFLvv79qiN9n9b4CAD/worlBbRZK29smDV7Mh/m4JAFgkAWAOPAL5ba5HDQuEeTFxJkAYFK1s0H+CIBFGwCkwDmQ9OSNC00yAHiS2C52wejFoanLRMKsJjuOb4ttOwO2oopYf+b+umftaCsn5ZocCoAwxscJq3azIFjRlT7rAnkAwA1AKocGAESKM9Pz3uYGQABUmaDzek/YMpljzgFAd7nUG+ChcgM8kLnwrPLDVkU+QEJSsxwAZ7YLJGjJX2nL0Z+Z7esIBP0GWGm+AR7YN4AAQNsbQNsSnwPAS5xjZZz9Dgi7SlBLXBxF0Un68wkNojENyQsnWuepmFTKbUDJpmU1AKSVo6unbOMiY6JbZS3G2u80GwrJUAirphv7cpf5AjljjkFlqjuWY7BYBW9UfrbsRN/qOTQWkND3f/+xziItYoCWABjzXiceA8gJoS5ZsIDTXnSMTx/Zw+AxfDGh9MHCP1lWU6e8sGYVTu5ayzqaiLpYiwdfp0kBQC2TYGM+lo1+K5lN8dochFp04hSMBg3JijWSyFwFyp5GB4GwPQXZ6iIFPLo9P9G3suBcw3qbZMN7mEJfFh0AvAeMZ4GWjQCfxAAhCGYrfzEx0mkzOxqUhozwWSN7Xz430pxJmXafWBZ+qO7/Jdfoe7LinCuaEAtpzK2GGeaU3RoRNjZ6NUNLBKdHPMnQcYOBWVd2X+X3mi2J6S7dcFHBLe98mHxItjb6NCGbhRBLDJVtLHGmAaraIgHB0+iXKeYKtRaiD8z/53UAOiBzK7+KKsMMV3GDbvFKHy90CAA8ZQS2aZg7LLPTmM14lVfP8fdZtkQPUMnGliumkG18ZVYlpqzGlBZ+jwVn8WrWyGhPZqAJyQyP5/ab2SRXBvVk3PNL44hhrjINN6Vm8c3WDLacQruFsdagU+ZACvS8R8ciecOjMu/N3SBRAWa7Azr3MrleDoCQ9uJL7XCYWwsotWsuKVOy4Fq/0JbWL8RXl07efHXpGBYDbhIKlkTFiBmpmAniZLR89PBEJw2Woi+BVhe8MRpBjWuTEPqes4qyMjEn6kAKgaxU/LqNm6y/8n9Wt2H6M8eKM3LPagTMmzmig6PZ2P6GyixwuBk6ahPbJfNBBY0GXpFAyZfZuHh/lmrfA8sqj4lbgrn5qj3BbYL3m1n6vDCSXTpdv5gNAQBIyT5RVkSdK8U3yFKo3althlTI1JzcIHP3yh4oIcDw73BN49fJDQqdGNkkkU69qQitM/CiW+B7SgzkA0Ghri435zSXOZKDNuJTpR3exBa7LydgQRSKC8t/5bngd94bqQ1zyZXokcVrOjeoJMaqrXIdMAUA8O3tPW37On8xB5wWvg6EKwCwbBUP0Cgbc8OI5qElimU6XkwzE+c6g7TWV79lTFetn8tboLVkGPaQXlKXNHxCiNdOwi2g1BzUIqDSdHigW/++JozgDLtDO6QPA7oeTQCcLensYmpPuOa7S9eFX3PELZn0JADeT8xwKgBwK8vezSwYwsaW6qUENuoWAMARyTVWgRbuBii7ykzBb6SqgKMDgNQL+HTVVYac4LQr11kJ0W8lTkRlzTpkxVHwv4sU/F1Sc1AnCjn/v6b8zPrryn9TkBSEfqGOuXR6Ql2gxlvgvGd0BI6aCa0edNWtg3xdk0aNGAFwHlygW+2u5zYAgBgAAbDNZh1wRRIHwPio2errAICxUaM9gdwA3BVSNsTnb4DFRgBIYjBq5XMSb4BDFnNdSmpEsZL1yL4BCCnBwUISMY9hAKB5kEVhEsuRHynlcKwAikBnFnbox6ntYvdbdFNiVZzynzM8VA7GsBA6AOg+AtGXhPyVPF2JtYi2HEUZACBNPUkPc8XPMDhoz5SLQVQ36FDpvFToJXuGu4kLwgMAsLVmlomwNiLYADklpneDOnxQWSi/1lmpVVWNyqrWDyKGS5zlhuxNqE5Wgel54gYlVpmkJimY9HVFjLlBA8CZBEC7+YSe3F7SRNVigYD1sJg9+pd0V7FGV2I+y6GRJm7bVKe4F3zizdqYgwG+NoAvGKhPYI1qC4YPvqydj08ik5977k4bAlRe2NF6a7Sla3az1yB1VfqemupBeWBqWGWtcWpLbZzqNncO+pJ5BEDckUxXxIaWaJwO2+JkXZw23si6jLQdYhwAx3omCN0b0pRGmOE+jOlYrSeI3zi8lUPNAikbcrR0Y274RK3Gnukrs1ZZVV9Q2ZzcMdefrp52BXXNgLFIB7ess6kNlyDteZv89KWxdzazeZy4P7hSFDfXnyiLu02rPCQ9NFlGt0PaDsAzE3THrV61psU7VkBUCMGszMrIAEC+rbpHq7Nhhtgajs8WjChz8vJxqpqL/ntWSFNdN6v35syY2WigbhQ6yFpb+AJAdWk57GzmS9s7VhZDIO9EEihtXrClCgrfI29r4GmusFU90tyFgMmtbfVxQJ0JYou72QBFbKcwmuV4W3G4BYYAgJh2hR3J9x/LeWfMvJhpx7NuZMNASyroWzQAHMLuXXQXzhOwk8WHIhUWqKBQpQWEfWuPFkwFaswb1I1SuFWFe8PrEpIxcAyb4rWi3EquuVHhcdq6pN0B7jPd+66IoD/99vS7jpzME5R1tAqmlSrDF9JYoFFkG6kToaW4IjrlG9V9ztgpES9Q4Yb3+4/5DPJIsjlMwN06uU3iDVzaTbZjurjl0UiZcR5l2c0wfSyMicZfpFhTrlDcmnJ3xz0/VmU/YtJjW274ToRQFEIffVUp7q0oPP1iH7Oy/Jt2GUhupfj9oa18nNvyDhSOGosHWcHldcydTwWAT2oABOkIFgVl0TVuA6d+6ewEqHcFOmtrHCjuAp+LA0QVnLIK7X0GgECkReeNldI6BNxRYT7Tttbzdu9a3L+Hz7unkTu1WSLIjIsNAOZOsC0z2JsTLX9QeHbFB7FSkz3YZ4Djg5pPbVa4o3HEXh9lUbY/o3Ur9sMOVW4ATiWLh1ZvwkTL1iTVhwIAvisBkN/ybm9dpwDYBrnbsHGdAKDy/2v3JzD8ZgHwSAJAB0EKWnEdE7GYMwJAXU7xOvVAvU0AkDiATOh1TesfrngVAEZxalYA0G7bRWNTvFRM7DIIt/HYW2Yc0OHLRVbYd19XtmxqLB44v+2MfB4Amo/KU0/CBWLLK5qUn7Ae9BgA6A1Qb1sMLlDzDWAxUGgL+bi//CIHgJ9Kxa/kdUsAaLu0DBCMWLNeqw7NWW6AGQCwoi0SV56fbIonW300ZoiU/QvvHsHbFgDkBmCDTEivggCozumzdD4IgP8DGFq+LdISiFgAAAAASUVORK5CYII="
                    },
                    "preset": "sky-replacement",
                    "format": "png"
                  }
                },
                "example3": {
                  "summary": "Custom graph: colour spotlight, curve and vignette",
                  "value": {
                    "image": {
                      "filename": "bright-sky-landscape.png",
                      "contentType": "image/png",
                      "contentBase64": "iVBORw0KGgoAAAANSUhEUgAAAMAAAACACAYAAABdhGZrAAAk70lEQVR42u1d6XpU15Wtx+qAEJRq1CyE0WBNaCgJB4ifJDaQLw4Jjh07wcTJu3R3ekwndub+rUeo/s69Z1h7OvcWIVPX+bE/GxuVbp271z57XLvzz7+6nhYpMq/S+ZdfXU+LFJlXKQAoUgBQpEgBQJEi8wiAf/319bRIkXmVAoAiBQBFihQAFClSAFCkyJwB4Be/vp4WKTKv0vnFV9fTIkXmVQoAihQAFCkytwD4t6+up0WKzKsUABQpAChSZH4B8PX1tEiReZXOv399PS1SZF6lAKBIAUCRIgUARYoUABQpMmcA+I/fXE+LFJlXKQAoUgBQpEgBQJEi8wiA//zN9bRIkXmVAoAiBQBFiswvAH57PS1SZF6lAKDIfAPgv357PS1SZF6lAKBIAUCRIgUARYrMIwD++3fX0yJF5lUKAIoUABQpUgBQpEgBQJEicwaAX/7uelqkyLxK55e/v54WKTKvUgBQpACgSJG5BcD//P56WqTIvEoBQJECgCJFCgCKFJlLAPzhelqkyLxK51d/uJ4WKTKvUgBQpACgSJECgCJF5hEAn/7sO9NPfvadchhF5hMAn3gAfPLl8+kPf/p8+us/XhcpMjciAPDx62flYJhsTvrTrcv+9O7VYLr9cDi9996wnMv/FwDsPB5P7z8aT9/55igC4OUXBQS14ve8cACMpu88Gr3137f7ZLmS8E7c73G/7+7loHqGzYvedAPE/fnlq2czAZlK/TlzDQB30AEAzrK5l+wA8INXT6c/+MnTuT2YSsEMALizcmfmFNUp7Kyf7T7HnXX6nOWo/DUAltM7eVi/E/f7g9JG8SDYsOTcydJ0PchZLWtRupWsnnanqw/uTFdO7vzDv7fqO/rvG95heHfOuH/8+jnIswCAETlsB4CXHgBOvvrjdVa+/+MPiay4w3xwp/Hn/h6lUhqvWBoAVMX91kr1T+szHWi2Hw78P/0NonzGnvsc/1kOXMEouZ91t4B7hi3FgrtnDgq+xhX8FBTcK/lyJbejuP9myt/pe+y/uzAdHtyajg4Xp+Nj+B7+e7rv7L57AEKl0188m34M4v7ccYdcH7S/biMA0i2gAYEo/edMHAj8Af7DKD5zLYilVQAQrP+eV1yqvMmNeccblyDO2ITbY8dbfPyMPfiMcAtsx1vAgyACoX5e95IrhY/KzhX+dqUk46PFSmFGh7emw8Nb1T9HR4vVf18OSuSU50E3KlAlZ91oWf+W72hp70Ylvb2b0/7+zQoEg4PwXRbjdwnfx313dw7u+Z0uv6zkWQSD+zMAYAgH3U+3QBAAwvd//DQq/gtDEJF/zUOqEH8u3YFNotj9BskDwClxsNyV0r7PFXiFuDNcoruDiv8+/Rz3/9E1rW6BqwEBQgTA2RJxY4LSOyVwiu8UwymJUxanNP39hVqB9hemA2dJD2/VSnNyu1aY0y5xJYIVDS7FX93a7y9Ml/ZuTpd2b9TiQdCD7zDwYKgAcVCDO3wnp6tRf19R6QTrrwNAB0EAQFT4z0ACAIhFuTP96k/XfzGp0B5eHLwsatH7UZFNMYFQ///tCADvunjF3ffCgZBuhQCIFar05OdXKwmfId2gYQRAiglq92fNA6BS/OOk+MHiO4UYvFsrfY8r0v7N6eBgoQJJDYBu9XnckATjseXP4i/5PlHcs7vnrqz/7g0JggiEmx7YC/5mqIH9ArwSNOJBWgHgZSsAfOCF3QIeAO4Fvc2DGQQfMFx3BgDQ6m8BAJxPHcQGQR4ASYFXvUhLnhWm/PEzBABGGQDUvr4742UPgLFh+YPyd53s1Irk/ps7SweUCgDe+vNbVJ7h4C+u/O475ACwFADgQRDE/f2gH0EfK49FA4B7oUH5wzX7Nm4Ah7rgAgWf0snXf7p+I0kvM1x3NcJHeHWf5QHAQdDuFkg/s90QA6jWX7kBdhuAITJBORfI+//VDfAguT41EGq/ONwAPVCk7m4TADKGBM7rTd9nk7jvkgAgXSBN+ftwEwTXrvEG2L7SDrYvlR8B8JOnMQDW/P8YCEM0Xqfc6pfV9hDWToNloxYNA7gY7DDLJf34nDBlV0BSpUBZFuj+47Hq4/+5ElPT743IrUwBGjJAIfuTsj0YAMdzw1tgb3YXSE8Q1M/ytpW/imkCAA79c++Dwgulr92eIAPIEL3gys9jAK0wElJrPzCCYBII/1hmgGp56hWfBlNBsgfAshpo2cYg0cXyv2cj5n71gg9JGWKABznjGPBeDojLUdcAMJUZZBQFsz2zCn4Od0fdM9HcPsvva+LPrzo7D4KBt6aoSO7P0ZVkN+ks8raU333HNQ+A6rkPFyF4pwqfgt+FGPwOYxBcp0fR9SFZIG/gO6E4Yol2bVAQPCVK7yT8f7Qi0XKw4g1HPi3WdPXUHs/1essfgl203FhBFelCL+g68aIXFQAEjx0uJXC21c8YTvHW1T5nk6U419lZ8NSkCPQnCTTrQpnqQLE3SxboDJ4B3wmKfyd/rvKvk5imDuRDHKMq/CGkQYMc1crvbsCgj5Xya3UALB5gwJrclm4WBKr4wDkqlOJScMWURZy8xJePFT9mvaNLxw4WsyU8gHbPhT0/7xCrPIhtCdpzrzPXgQSOE8N9OWeAZ6DHXD4pXuEzX/RU0Lo/u9/l/g66FAPFVeAAQJcVn0k8zzG7mY9qBXSf+fX/XreS6Gqdy/fEXV+i8EeQ+0fPANxiovyvn0E1uP73DikgQEWNAOG0ayo6F7xmQrYALSLNYvSllQPhZe2m7I7mtiAA3PcJVmUEBzn2IHC/z30mr/imTEz9efU1LYNOcXZnMp+O/voKgHHMxb+TESgUWjj3M+73IGjlM3sQhOc9uZOCYrCgI3z33ACe0laJZabkRDH9Z9b5eHBREGxgnVc1FxnPB8/miCl8eOZjpaKNbrGvAgfFd/1uQdyfO30oIgx5YOk/SAVCVHav8EG+SMrP3QAt27TJXBNefdQsfN7lGBBXI/6Os6U6swBZkfDdHRjcAbrf6X6P+zns90kV2dr6V59FlGkBCjCyEilcBVQkrzhcWbLiFcl9jnuWKkP1cEhaK0Iw7c68Ai3cAqi44Xk5AMI7154ZXZI+l/1UaLNSk6a7dabFftJAcINDvBc0Pue1QSPK/+XzuvPZdz93MBji/uAKe3khqE3WHsrKIM6/wqCRBos8wEupPOHj8oYmLTDlSs+kclmYBRxgVqHKgtyqDtb93goADwcx1RnaGhIAetXfCyk6zE7gSxY9Kidc8SEzEwpUeynFR9J8LPtRBa4etAEA7myr1CykU92zu+d251TdWv4GHHng4e3PC5f43ldiJq7+ucGBkZlRBL9LpWP+bILrGW+Btu7WiaH4hu4EQ4zK/8mXqf2/g+mwvlJckh9eo/WlAYBK+S8HxI8OACBFtwwAcoFpAlZe8e8pAKhe/uEiKQqFPLh7uasRACHXn6xpBMBFr/p74wAkyE9zQ4KuRRBSoIq5eShQQY6e572XAATuPSEAwvM6xcdiGgHuGQJgcXYAwHPHqrKQG4YkA4Fu52om3uD9TEnA1VG8lGj9PQDc96cNiOlWJwCwboA1I/OwofTW8Lw5BcHQvAHWhQu0ZGRmbKXXsjbBBbJugH5QpngD9DMAGFbPu+pvAOf6JMt9MxoRLNIRP/VYAiCkJUmlc4+V+nml893ZboBtFgcIf5q5E5oLRG+ABZFObRRoXiMGlgCgawJA61JtAgDeAKR+8wgBAN11sSKoXE8kINWqhLziqgTAWhDsbpEU/S/Fw9D6ufPKTz8ff0/ILa+gD+x99+CTrviAMvjT7/iGt50n6AINq2cOlhSLNLE70d+iQ+i0HCtZkiH4/iHHzauZfSvP7YzUMX1m0qPEYgASCD+4E6vEYyt4Z0q5yuoJ3HXTilJa3JJcw0U94D5LSrzK0t+6KOlYTI1740kGmUjtZYgAAGUIlVUl+9JWsGKoxQlqrxHLJlHl14pPNOVHKqa8ZZi1C5CUmS/+uL93l/T78BigDijduZCAGrMqB3qqbiQyOjJ7gj/PfXQR/MEzp2t+GFuu9czVUgpoT6TVtwqXmJUZs9uLK/3QaE8mAax/fh5jCkvOwQEgIfUoX5PSguCNC02Hku6kIDhcq8d1ORx9KKtIQ6qqsxTSRNqUZZJewfCCj+DDy5UVVJZVmsipKJ5iQyvDD6qy/u+NVADc8wDAgHLcRsEPOTBsBWm2yrRVoXpHkz7EXQOZaYOiGLoXWmxHCpekgNhNBTUlk6ZlES0Fx4yYEHgva9zrwO4EBQA4kLWqxAIYQ4YiZCdmQt5diKk1blmIlWWFIJ6+5F+OT4sFEelUJZjmudsQwfMxTvT1aU2Bu275aa9Y/PomAmBM2pJJcQlTdSdGGzJPcVq5d0UBaFENCoqisGbMNIAhWBdFN1a8g5iOpJsnkKoOtwBxI8EtI+0UtEq9cSEr28LPNyx4qHJzzyEAAXvT4jDWA1pn2DC6BDrR//fuzyrzhdFvItkbOBTeooBTSFbHKO3ReMYqdbXEogWmr34G4lNZ1TM5UJ73UhWRHGZtQXLxBN4wAWBB+cNkV+VSQFyxzjJX6F5hmrPflAtXin7SsucSCX2zoi4GWwKozuW8BCYwtDiqbqtImSS82eL3OU35d0yGxLYPeFaZ6kyKiz68+xyiGzDRJQDAhrE0Y4LSiXllnwt3P5B8YRk1xxI786u1KSR31X/vsw+m3/sREzc3AF16DgBo8UnFLii/V/pPQRwgkMki9r2ctPOV33mURhQ1QQDcf0T78usAvrZCavNZ7LtJOX4Ra4Vn89e0vJGU7MVjSWLAbyQxGxsVYEkM+2uKT43DIH7fDeUWGMFtFqvpXn9CNg0N6N1orOC8TpjbBwBIA+3Ppz+EYfY4tgsAsCYSNZcqSIcUVo5DNRRTgWOfCWFZhUlPKpwYxFioFP4jJ59+20sNAncTEAAopWp0e6Ly/9yLBwQCIKb5QiuB90XXTgMAvEI9wiIXCnV77j9OChcCS2toqIo1zlK7RQWAkOfH/nufdo1ZnDMaa1GL72+kx5I5IoAgZXiWZIYHMi3JokpXIP7OK9ntit93g2WSQryD1n8DM2lqNX2ofhbv4Qm3iHs29zO8heHjJgAcW0E+lQ7JKzMA6Gm1kQkAbQyPKn8tNQA+EAD4IQcAWP9POQB+zgDw6pnIc4cXs3aqZXgYFckTCYSk/NLq8oa+DdZvFAEQilw7HADYyyODNI19AmeOscqr5fjH2qwEpJWTYLv30KjbyHQy9gQRAHgwp9npMSEJCOe3YaRlBQCuDAB4o+duYA4ATPGK2IIJcYH0G+ANAAA3QF+A4C3dAAwAphIoL4a2OTClN9whjTiAzhks0RvgSL8B+gQAqQP1TQGwfZWqvOT2ywFgIod9ZOuKDYDVHADOe/QGAGMSDcjlYOYbIDyLegPAhKLWKGcWzCoAQDU09sNc8IawZZkJwcPgbbHYKehvgnwM8FQJgvEWyADgy+dmpVMGZrQqmBU2oELSrcHycz6epgGUfTl+uBGei1ni1gCABj2cniMxkOYCTdq7QNtXCgBOboOy0XPemsj2A3QhSVAduj4h7dumzXsrxGDe+i9rHaPGLYCS0qAHC3UWSHEXeBCsHQb211stvWRm2A/QpFQoS4MCCIgb9PPv6KX+ScYNiMFmLyqbHFbRK8lkXDQq/pLIAIXMk+j38W3BsVB0yAJgnqOeEQDujEK35xoGwVoWhA3ONAXAWgyAmSAea9mWW7k9sb4AdQmzDeaSvgfxLKw9W3S5GiDokMForSVAi+IhiFm1BjZYzwZKdWUZxbGXr+j0josLrCF0agV1AIQDWGWsEZszyAYvCCkD6An4i2a//KgpXRhcEIM9LnzvTzmh8RfPBD8QqSeo/VsyIOaxALG4mtVWXJc1bEG4ZIWnqwGpLWDqNtduQ7NWPfEcpK2ccANlQOCl0/XNV+6qTn3xMBiiZARiSowBQFiezEywmITSuvmiy1IrwqwAMJu9miqUzE9c1WaTtYEQHM0jVd5FMsccCkUbIdd/pdckqhTtY0qfiBkwZPR2BiNkorC7kk/O5ZgeNFcI3T6tpYRXrYmRMSfiZKGuFbep1poBc8MDYzCedLsyo9zh2YnlYxo0psMY6NfXA9mlR4pPmTnddUbpEYHkPyOk1O75jBRnYtt50gwAMUVkyfGiPnTBeHawkU5jWVMrvYpLIgtzQzA2I1aNXlZTwKkO8jwWh7Dqu2EUvgQQcJz0SpngYwWsNf6+tCpuK2aJvqw6q6Oy3WzBkcwn7FPGOBMEXjrdnW9UGYrKDfL5aTJqd2mPMa5ppezMC9auVD2oCn77EslI2QAYskyIHCUc4hWZmbQaKI1pcdQPOzf3JFlT7KlSWn75jcgDvHvK7ERTDSQAAG+BRssKrBK0NSRXCR7k3/uJMVPO+5fUtgRlhFX8LhrbpNZsfaiIt1+rreleOnccAHa+kQZDjmSBBpkL0AezAIBVvG0l64LVZNGmfJgmhjAgr+IABoDdlgAgI3z7+rRSE9dMHPEj7GrfmN7x4v49pDkHpNUhrwC8zSFbAQcAxEo4uEHhFsi6Gee2n63dAqpS4kyzIla7ss2+Ib0M093CVLtF+bh7Q07ohWwVu90jAJZYILwGSswbo6KvaQGATOPQK52X8NdwVvcQiE3fJgAOYPhEo9mLgyg6GHD0jyj/fSrd3RtpxBLayqlLAIPaX7Cep58+//MA8JoDQAGB4ETqmawabwoACYQ7ZP43Rz/TFHCPjZFSnKqL75KPqB6ZAJCZIA0AmxoA4CC0HC7pvfkm3UNAAIA3wJFxAzw2guCrTAzAfPaeYi0I1d6+Qra6L90ed2Z3EAQ7FAAjg2YkjpMaHa/ZIiD2QSku0MeQRtaV/81IwSwArLZQ+lVGt97Ev9QGACPI+vQNykcx5nuozFU4AHz0SarQDkiTVspSvAnJ1OaFNczC2pcxneXTiJi732SNeTtP9Imn1KOvAIC4QMYwtzGFNTigDAjEDdpJblBwgSLV4KHBrnHWlURNr41GQDHInRQ/ZIA05a+m7HKKz9KOpOWaxwGXeQBY/fyrylCLdAF52pVmnFJ8eMfoNKAAIDPVeykmG/AJPUh8dLA/J1RoEQCbk/ZbSawDtYpKlkUhN8mkJ1YTBYkTT5O+5P3hufgDWpTq4/ghG9tTp7m4K7WnWR3wO+Emw0FuOQshN5eIarghkeBJ6ZNfN1cj8YYwyS6HFWI0fjnDx1kZcqO0nOVjmw2pbE5onYkU3Xirzb5kve4acYD2XjvO8n/0ow9ig1oCQKic9iRduJVdyKS7ZvFLJYhkT7xWoudNWmI6yyJtOshUD0+U3L/IPFCe+oGyuSRYnxefy6EgMhFnDgZJQYvPp6T4CGFeYdkM9kRnzM5SNRqxjranoZHIbELTrcu8q8DYeRBu5JDZxBZ0buCCdEh/DgyriPL5RZ5VeRblFssXOH15lsacslhvaG6UOqKojCmysjkf5ePsaMEXpRkIdptoQ+Ew1B5uWdEOYrDtvTTHRnPbe54K1yQXqK6dchKy3BjsEiMw4GOaS1LZ1fdptZzICTSVjU5zf0hWjgbDwr31/95Jyv8BoTZv4trXlk1sqf6inEO1swEDQUKrxR8bLA4RxZGjxdaisaKtsdaByFqhsCOgolN2NEplEsQ679AeEqQNByufheVjgctKi4rGMbqqEJFtmnymPeFWSZ5Wu6ZwN9tv1ZcVZ+AHxZpOTGqA9Y9JCbwFILsnExsOAJ9J619Rm7Mpoly+OJBUxS/SVDYHF2vL6NAUrRcXPWl5oEhCFsE1VYK1AfQHdtvwJp+LfSDnYgeZQhkGZ1XMxbpiX3z+oTk7nZXP7T1tY41vVKMY5N8dqveN88XnS9m1pI0M21doOJVbnTW6EVf2Xeb/87S0AAFdqRT+vfMCrBEBwKnuz4kAhjOxtajy5qaHtOET0nukLIHQ5hFGBpkqT4PJHQPyJd4VHYiUKY1XmalfSl9KzLqxuOtty7hV+wdvZJO3QOuYDeaYtzJzzE0085sTXXdI3xU7Z6fkd5S6jAaCJVIEvREA8GEzAM57kqhKCUyz43NHs43PIQDUAXxF+ZsAsKyUw61B7HYs0+nFDNgqInwxt+//UwIBDAZ9j52/KZ+1FP/32/ZCpVStBYBeu3oCG+TPsQKSfWcCAD1CbtAEgKVZALDL6Bp3DQBoSxJUADxskePnaSwxp6sA4HHmBjAYKKwboFH5fdCLRRrCxqBkJywADK0bYIcWy2LaeZYbYAbl1wAwemMA9GcHwFUzAKwlIbkbYNR0zpry79wQsQC2wnTEcjsTABpVYYb5mXyRruiI5BNanIgq5vm5S3Xazg3iXZ48Hy82zajUKZIZIbIvxD507ga1aJjbXxDKr/n3rUGg/N3ZEgBpoTTp4GVB8OYsADDGK01XyLhp7SAYskC7cNvu2EFwTwuC+QGSvm4VALyJS+664iDQeD9xaoiMXipb0nkL9tpphkHYCPQsRuFmGr1hbN1AVjgLALzjlHDms0URL9hOte8ra6feFACqO3goF21wMiuMgcxU6EUGAKp3QEdLJRCsSjAl5h3nipJKIUxulZe7xDqYNSDr5ZVhFixMqZw1sE3lXrjmILrXmNjQ9aEMDYobdNGTO6vESKIxncZ6UtRK6EQyxBFQs2Hu2JJr1BcSDSKjQzxWUpBnckOKAAHfx2wp/zF1c0y6RoXNTcRAl0YqugUA7j2UiwTzApT2E3oLWM1wuW5Q0RKt0FF2xsZ6pLVThVqQKQldF0pZFXg6k088aSN/hKYEWChiXDFRDt+i2TvR6fYEqKHifFcAW+9gXVca+LKEtjzgZjcsXyKI7eYhiTAbAJSkgHJL4dzCqm+B5zPKYpRx0hYAs23RTIS+wzyhLwHBLbJBkm6/vNk8EOMmwvIA6NKmKQCANrTNuXUsihHCvBaVni2YfrIs2Og08lt1ashY+Mf3jdGRQGUPsEbqNAF26BnXDXES2k0+GGJUuHkgSECgKL5qLbWBIGw95zMgbBKQPxuPA5riQ6nwOgNfI+PdiU48YFFQpk09+rKXTo5DRRvk2FICV26924u9NX03uEGPqFUgjXkXcln0mtGcpbX+kr4UxSWjYKb06KusGMbHIIWVP28qJoIffElTv3HGIQ4M2VsSxSin1hHLWSoYSdddhTFD7CyeAQCW8sczZrd+GHMl5As4f6CsmuL7yiK4GzhYO2pVsBUAdMaCN5b3QSIA0A0yNqZfzLhPV6MGzFCRtFo4xwAgyKi0jZYZNrZtXks50W8bjQPHBMABbQkPQXngg1phGyfjMz2URLzIiRQ6T9sCgCu/dH3HJn9Qnn7mlrqRkq/BpYao3w4AazkAeLaCnFLvv79qiN9n9b4CAD/worlBbRZK29smDV7Mh/m4JAFgkAWAOPAL5ba5HDQuEeTFxJkAYFK1s0H+CIBFGwCkwDmQ9OSNC00yAHiS2C52wejFoanLRMKsJjuOb4ttOwO2oopYf+b+umftaCsn5ZocCoAwxscJq3azIFjRlT7rAnkAwA1AKocGAESKM9Pz3uYGQABUmaDzek/YMpljzgFAd7nUG+ChcgM8kLnwrPLDVkU+QEJSsxwAZ7YLJGjJX2nL0Z+Z7esIBP0GWGm+AR7YN4AAQNsbQNsSnwPAS5xjZZz9Dgi7SlBLXBxF0Un68wkNojENyQsnWuepmFTKbUDJpmU1AKSVo6unbOMiY6JbZS3G2u80GwrJUAirphv7cpf5AjljjkFlqjuWY7BYBW9UfrbsRN/qOTQWkND3f/+xziItYoCWABjzXiceA8gJoS5ZsIDTXnSMTx/Zw+AxfDGh9MHCP1lWU6e8sGYVTu5ayzqaiLpYiwdfp0kBQC2TYGM+lo1+K5lN8dochFp04hSMBg3JijWSyFwFyp5GB4GwPQXZ6iIFPLo9P9G3suBcw3qbZMN7mEJfFh0AvAeMZ4GWjQCfxAAhCGYrfzEx0mkzOxqUhozwWSN7Xz430pxJmXafWBZ+qO7/Jdfoe7LinCuaEAtpzK2GGeaU3RoRNjZ6NUNLBKdHPMnQcYOBWVd2X+X3mi2J6S7dcFHBLe98mHxItjb6NCGbhRBLDJVtLHGmAaraIgHB0+iXKeYKtRaiD8z/53UAOiBzK7+KKsMMV3GDbvFKHy90CAA8ZQS2aZg7LLPTmM14lVfP8fdZtkQPUMnGliumkG18ZVYlpqzGlBZ+jwVn8WrWyGhPZqAJyQyP5/ab2SRXBvVk3PNL44hhrjINN6Vm8c3WDLacQruFsdagU+ZACvS8R8ciecOjMu/N3SBRAWa7Azr3MrleDoCQ9uJL7XCYWwsotWsuKVOy4Fq/0JbWL8RXl07efHXpGBYDbhIKlkTFiBmpmAniZLR89PBEJw2Woi+BVhe8MRpBjWuTEPqes4qyMjEn6kAKgaxU/LqNm6y/8n9Wt2H6M8eKM3LPagTMmzmig6PZ2P6GyixwuBk6ahPbJfNBBY0GXpFAyZfZuHh/lmrfA8sqj4lbgrn5qj3BbYL3m1n6vDCSXTpdv5gNAQBIyT5RVkSdK8U3yFKo3althlTI1JzcIHP3yh4oIcDw73BN49fJDQqdGNkkkU69qQitM/CiW+B7SgzkA0Ghri435zSXOZKDNuJTpR3exBa7LydgQRSKC8t/5bngd94bqQ1zyZXokcVrOjeoJMaqrXIdMAUA8O3tPW37On8xB5wWvg6EKwCwbBUP0Cgbc8OI5qElimU6XkwzE+c6g7TWV79lTFetn8tboLVkGPaQXlKXNHxCiNdOwi2g1BzUIqDSdHigW/++JozgDLtDO6QPA7oeTQCcLensYmpPuOa7S9eFX3PELZn0JADeT8xwKgBwK8vezSwYwsaW6qUENuoWAMARyTVWgRbuBii7ykzBb6SqgKMDgNQL+HTVVYac4LQr11kJ0W8lTkRlzTpkxVHwv4sU/F1Sc1AnCjn/v6b8zPrryn9TkBSEfqGOuXR6Ql2gxlvgvGd0BI6aCa0edNWtg3xdk0aNGAFwHlygW+2u5zYAgBgAAbDNZh1wRRIHwPio2errAICxUaM9gdwA3BVSNsTnb4DFRgBIYjBq5XMSb4BDFnNdSmpEsZL1yL4BCCnBwUISMY9hAKB5kEVhEsuRHynlcKwAikBnFnbox6ntYvdbdFNiVZzynzM8VA7GsBA6AOg+AtGXhPyVPF2JtYi2HEUZACBNPUkPc8XPMDhoz5SLQVQ36FDpvFToJXuGu4kLwgMAsLVmlomwNiLYADklpneDOnxQWSi/1lmpVVWNyqrWDyKGS5zlhuxNqE5Wgel54gYlVpmkJimY9HVFjLlBA8CZBEC7+YSe3F7SRNVigYD1sJg9+pd0V7FGV2I+y6GRJm7bVKe4F3zizdqYgwG+NoAvGKhPYI1qC4YPvqydj08ik5977k4bAlRe2NF6a7Sla3az1yB1VfqemupBeWBqWGWtcWpLbZzqNncO+pJ5BEDckUxXxIaWaJwO2+JkXZw23si6jLQdYhwAx3omCN0b0pRGmOE+jOlYrSeI3zi8lUPNAikbcrR0Y274RK3Gnukrs1ZZVV9Q2ZzcMdefrp52BXXNgLFIB7ess6kNlyDteZv89KWxdzazeZy4P7hSFDfXnyiLu02rPCQ9NFlGt0PaDsAzE3THrV61psU7VkBUCMGszMrIAEC+rbpHq7Nhhtgajs8WjChz8vJxqpqL/ntWSFNdN6v35syY2WigbhQ6yFpb+AJAdWk57GzmS9s7VhZDIO9EEihtXrClCgrfI29r4GmusFU90tyFgMmtbfVxQJ0JYou72QBFbKcwmuV4W3G4BYYAgJh2hR3J9x/LeWfMvJhpx7NuZMNASyroWzQAHMLuXXQXzhOwk8WHIhUWqKBQpQWEfWuPFkwFaswb1I1SuFWFe8PrEpIxcAyb4rWi3EquuVHhcdq6pN0B7jPd+66IoD/99vS7jpzME5R1tAqmlSrDF9JYoFFkG6kToaW4IjrlG9V9ztgpES9Q4Yb3+4/5DPJIsjlMwN06uU3iDVzaTbZjurjl0UiZcR5l2c0wfSyMicZfpFhTrlDcmnJ3xz0/VmU/YtJjW274ToRQFEIffVUp7q0oPP1iH7Oy/Jt2GUhupfj9oa18nNvyDhSOGosHWcHldcydTwWAT2oABOkIFgVl0TVuA6d+6ewEqHcFOmtrHCjuAp+LA0QVnLIK7X0GgECkReeNldI6BNxRYT7Tttbzdu9a3L+Hz7unkTu1WSLIjIsNAOZOsC0z2JsTLX9QeHbFB7FSkz3YZ4Djg5pPbVa4o3HEXh9lUbY/o3Ur9sMOVW4ATiWLh1ZvwkTL1iTVhwIAvisBkN/ybm9dpwDYBrnbsHGdAKDy/2v3JzD8ZgHwSAJAB0EKWnEdE7GYMwJAXU7xOvVAvU0AkDiATOh1TesfrngVAEZxalYA0G7bRWNTvFRM7DIIt/HYW2Yc0OHLRVbYd19XtmxqLB44v+2MfB4Amo/KU0/CBWLLK5qUn7Ae9BgA6A1Qb1sMLlDzDWAxUGgL+bi//CIHgJ9Kxa/kdUsAaLu0DBCMWLNeqw7NWW6AGQCwoi0SV56fbIonW300ZoiU/QvvHsHbFgDkBmCDTEivggCozumzdD4IgP8DGFq+LdISiFgAAAAASUVORK5CYII="
                    },
                    "preset": "custom",
                    "graph": "{\"format\":\"lumina-compositor\",\"version\":1,\"name\":\"Spotlight portrait\",\"width\":0,\"height\":0,\"nodes\":[{\"id\":\"photo\",\"type\":\"image\",\"params\":{\"slot\":\"image\"}},{\"id\":\"mono\",\"type\":\"hsl\",\"params\":{\"saturation\":-85},\"inputs\":{\"in\":\"photo\"}},{\"id\":\"spot\",\"type\":\"shapeMask\",\"params\":{\"shape\":\"ellipse\",\"x\":46,\"y\":6,\"width\":100,\"height\":116,\"feather\":40}},{\"id\":\"colour\",\"type\":\"merge\",\"params\":{\"operator\":\"over\"},\"inputs\":{\"fg\":\"photo\",\"bg\":\"mono\",\"mask\":\"spot\"}},{\"id\":\"curve\",\"type\":\"curves\",\"params\":{\"master\":\"0,0 64,52 192,206 255,255\"},\"inputs\":{\"in\":\"colour\"}},{\"id\":\"vig\",\"type\":\"vignette\",\"params\":{\"amount\":0.4,\"radius\":0.45,\"softness\":0.6},\"inputs\":{\"in\":\"curve\"}},{\"id\":\"out\",\"type\":\"output\",\"inputs\":{\"in\":\"vig\"}}]}",
                    "format": "jpeg",
                    "quality": 88
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LuminaCompositorResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tool": {
      "get": {
        "operationId": "getToolDefinition",
        "summary": "Inputs, output schema and examples for this tool",
        "responses": {
          "200": {
            "description": "Tool definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Problem": {
        "type": "object",
        "description": "RFC 9457 problem details. 422 responses include per-field `errors`.",
        "required": [
          "type",
          "title",
          "status",
          "detail"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "field",
                "message"
              ],
              "properties": {
                "field": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "LuminaCompositorInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "image": {
            "title": "Main image or short clip",
            "description": "PNG, JPEG or WebP up to 2 megapixels, or a clip (MP4, MOV, WebM) up to 10 seconds — frames are scaled to at most about 0.4 megapixels. Image input nodes with the slot \"Main image\" read it. Upload as {filename, contentType?, contentBase64}. Max 58594 KiB. Accepts .png,.jpg,.jpeg,.webp,.mp4,.m4v,.mov,.webm,.mkv.",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "contentBase64"
            ],
            "properties": {
              "filename": {
                "type": "string"
              },
              "contentType": {
                "type": "string"
              },
              "contentBase64": {
                "type": "string"
              }
            }
          },
          "background": {
            "title": "Background image (optional)",
            "description": "Read by image nodes with the slot \"Background image\" (green-screen and sky presets use it; without it they use a gradient). Upload as {filename, contentType?, contentBase64}. Max 24414 KiB. Accepts .png,.jpg,.jpeg,.webp.",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "contentBase64"
            ],
            "properties": {
              "filename": {
                "type": "string"
              },
              "contentType": {
                "type": "string"
              },
              "contentBase64": {
                "type": "string"
              }
            }
          },
          "extra": {
            "title": "Extra image (optional)",
            "type": "object",
            "description": "Upload as {filename, contentType?, contentBase64}. Max 24414 KiB. Accepts .png,.jpg,.jpeg,.webp.",
            "additionalProperties": false,
            "required": [
              "filename",
              "contentBase64"
            ],
            "properties": {
              "filename": {
                "type": "string"
              },
              "contentType": {
                "type": "string"
              },
              "contentBase64": {
                "type": "string"
              }
            }
          },
          "preset": {
            "title": "Graph",
            "type": "string",
            "enum": [
              "green-screen",
              "product-shot",
              "lut-grade",
              "sky-replacement",
              "custom"
            ],
            "default": "green-screen"
          },
          "graph": {
            "title": "Graph JSON (for a custom graph)",
            "description": "Format: lumina-compositor version 1 (schema at /static/apps/lumina/compositor.schema.json). Copy it from Lumina → Compositor.",
            "type": "string",
            "maxLength": 1000000,
            "default": ""
          },
          "lut": {
            "title": ".cube LUT (optional)",
            "description": "Used by LUT nodes without their own .cube data, and replaces the warm fade in the LUT grade preset. Upload as {filename, contentType?, contentBase64}. Max 7813 KiB. Accepts .cube,text/plain.",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "contentBase64"
            ],
            "properties": {
              "filename": {
                "type": "string"
              },
              "contentType": {
                "type": "string"
              },
              "contentBase64": {
                "type": "string"
              }
            }
          },
          "format": {
            "title": "Output format",
            "type": "string",
            "enum": [
              "png",
              "jpeg",
              "webp"
            ],
            "default": "png"
          },
          "quality": {
            "title": "JPEG/WebP quality",
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 90
          }
        },
        "required": [
          "image"
        ]
      },
      "LuminaCompositorResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "graphName",
              "preset",
              "media",
              "width",
              "height",
              "frames",
              "fps",
              "nodes",
              "evaluatedPerFrame",
              "warnings",
              "artifact",
              "graphJson"
            ],
            "properties": {
              "graphName": {
                "type": "string"
              },
              "preset": {
                "type": "string"
              },
              "media": {
                "type": "string",
                "enum": [
                  "image",
                  "video"
                ]
              },
              "width": {
                "type": "integer"
              },
              "height": {
                "type": "integer"
              },
              "frames": {
                "type": "integer"
              },
              "fps": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "nodes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "id",
                    "type",
                    "label",
                    "kind",
                    "width",
                    "height",
                    "cached",
                    "coverage",
                    "meanLuma"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "image",
                        "mask"
                      ]
                    },
                    "width": {
                      "type": "integer"
                    },
                    "height": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "coverage": {
                      "type": "number",
                      "description": "Mean alpha (images) or mean mask value, in %."
                    },
                    "meanLuma": {
                      "type": "number",
                      "description": "Mean encoded luma 0–255 (premultiplied, on black)."
                    }
                  }
                }
              },
              "evaluatedPerFrame": {
                "type": "integer",
                "description": "Nodes recomputed for each video frame (the rest come from the cache); for images all evaluated nodes."
              },
              "warnings": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "artifact": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "artifactId",
                  "filename",
                  "mime",
                  "bytes",
                  "sha256",
                  "path"
                ],
                "properties": {
                  "artifactId": {
                    "type": "string"
                  },
                  "filename": {
                    "type": "string"
                  },
                  "mime": {
                    "type": "string"
                  },
                  "bytes": {
                    "type": "integer"
                  },
                  "sha256": {
                    "type": "string"
                  },
                  "path": {
                    "type": "string",
                    "description": "Download path on the same site (valid for about 2 hours)."
                  }
                }
              },
              "graphJson": {
                "type": "string",
                "description": "The evaluated graph (open it in Lumina → Compositor)."
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      }
    }
  }
}