{
  "openapi": "3.0.3",
  "info": {
    "title": "Balemoh API",
    "version": "0.1.0",
    "description": "Balemoh is a self-hosted homepage for services discovered in Kubernetes, Docker,\nand Podman. This API backs the UI and accepts snapshots from federated agents.\n\nStart by listing Staging to obtain stable service IDs and review endpoint evidence.\nSave local display settings, then pin live services to add homepage cards. Manual\nservices start unpinned. Host widget selection is separate, and host telemetry is\nopt-in. Discovery refreshes preserve gateway-owned display edits and pin choices.\n\nThe documented server is the local development API. Use your private instance's\nAPI origin for integrations; this static documentation website does not serve the\nAPI. Catalog, dashboard, host, and icon endpoints have no built-in authentication\nand rely on your network or reverse-proxy access boundary. Federation imports\nrequire a Bearer token registered for the exact source kind and ID in the body.\n\nPlugin metadata, queries and widget configuration require the private BFF service\ncredential. Notification inbox operations require the separate operator credential;\nexternal publication uses a source-bound publisher credential. These roles cannot\nsubstitute for one another. Plugin publication uses its connection-scoped runtime.\n\nCheck HTTP status and Content-Type. Structured success responses use JSON, but\nerrors can be ErrorResponse JSON or plain text as documented for each operation.\nReuse requestId when retrying manual creation. Pin, unpin, and widget selection\nset the desired state. Refresh current state after a 409 before retrying a\nlifecycle action or an icon revision update. No-content responses have no body.\n\nExamples use synthetic data and reserved example.test addresses. Replace fixed\nobservation timestamps with current UTC before importing federation payloads.\nObtain IDs and icon revision digests from API responses. The integration guide\nprovides a complete request sequence; operation and schema sections below cover\nfield meaning, response formats, limits, and failure cases.",
    "contact": {
      "name": "Balemoh maintainers",
      "url": "https://github.com/araihu/balemoh/issues"
    }
  },
  "servers": [
    {
      "url": "http://127.0.0.1:8080",
      "description": "Local development API. Replace with your private API origin; the static documentation host does not serve this API."
    }
  ],
  "security": [],
  "tags": [
    {
      "name": "Presentation",
      "description": "Global appearance, immutable preset snapshots and uploaded fonts."
    },
    {
      "name": "Health",
      "description": "Check API and SQLite readiness without triggering discovery."
    },
    {
      "name": "Dashboard",
      "description": "Read selected service and host widgets or change homepage selection."
    },
    {
      "name": "Services",
      "description": "Review the catalog, create manual entries, save presentation overrides, and manage pins."
    },
    {
      "name": "Discovery",
      "description": "Request a scan of discovery sources configured on this API process."
    },
    {
      "name": "Hosts",
      "description": "Read source roots, workload inventory, reporting status, and basic CPU and memory history."
    },
    {
      "name": "Federation",
      "description": "Import source-scoped discovery snapshots and telemetry with registered agent credentials."
    },
    {
      "name": "Icons",
      "description": "Manage uploaded image assets and their revision digests. Bundled icons are referenced by ID through service edits."
    },
    {
      "name": "Plugins",
      "description": "Installed plugins, cached connection queries and retained widget configuration."
    },
    {
      "name": "Notifications",
      "description": "Source-bound publication and operator management of retained notifications."
    }
  ],
  "externalDocs": {
    "description": "API integration guide and request examples",
    "url": "https://balemoh.araihu.com/reference/api-integration/"
  },
  "paths": {
    "/api/v1/plugin-widgets": {
      "get": {
        "operationId": "GetPluginWidgets",
        "security": [
          {
            "PluginService": []
          }
        ],
        "responses": {
          "200": {
            "description": "Widget definitions and retained placements",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "definitions",
                    "placements"
                  ],
                  "properties": {
                    "definitions": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PluginWidgetDefinition"
                      },
                      "example": []
                    },
                    "placements": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PluginPlacement"
                      },
                      "example": []
                    }
                  }
                },
                "example": {
                  "definitions": [],
                  "placements": []
                }
              }
            }
          },
          "401": {
            "description": "A valid BFF service credential is required to list widget definitions and placements."
          },
          "503": {
            "description": "The service cannot list widget definitions and placements because required storage or plugin metadata is unavailable."
          }
        },
        "tags": [
          "Plugins"
        ],
        "summary": "List widget definitions and placements",
        "description": "Read installed widget definitions and all retained placements. Saved configuration remains available when a plugin or its source is unavailable."
      }
    },
    "/api/v1/plugin-widgets/{placementId}": {
      "parameters": [
        {
          "name": "placementId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "description": "Client-selected placement UUID. Reuse it for create retries.",
          "example": "00000000-0000-4000-8000-000000000002"
        }
      ],
      "put": {
        "operationId": "PutPluginWidget",
        "security": [
          {
            "PluginService": []
          }
        ],
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "description": "Current quoted placement revision from ETag. Required when updating this placement.",
            "example": "\"1\""
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PluginPlacementBody"
              },
              "example": {
                "pluginId": "example.status",
                "connectionId": "00000000-0000-4000-8000-000000000001",
                "contributionId": "summary",
                "options": {},
                "enabled": true
              }
            }
          },
          "description": "Widget configuration to retain."
        },
        "responses": {
          "200": {
            "description": "Identical create replay or updated placement",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "Quoted revision retained after this save or identical replay."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginPlacement"
                },
                "example": {
                  "pluginId": "example.status",
                  "connectionId": "00000000-0000-4000-8000-000000000001",
                  "contributionId": "summary",
                  "options": {},
                  "enabled": true,
                  "placementId": "00000000-0000-4000-8000-000000000002",
                  "revision": "1",
                  "createdAt": "2026-10-26T12:00:00Z",
                  "updatedAt": "2026-10-26T12:00:00Z"
                }
              }
            }
          },
          "201": {
            "description": "Placement created",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "Quoted revision of the newly created placement."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginPlacement"
                },
                "example": {
                  "pluginId": "example.status",
                  "connectionId": "00000000-0000-4000-8000-000000000001",
                  "contributionId": "summary",
                  "options": {},
                  "enabled": true,
                  "placementId": "00000000-0000-4000-8000-000000000002",
                  "revision": "1",
                  "createdAt": "2026-10-26T12:00:00Z",
                  "updatedAt": "2026-10-26T12:00:00Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid body or options"
          },
          "401": {
            "description": "A valid BFF service credential is required to save widget configuration."
          },
          "404": {
            "description": "Connection or definition missing"
          },
          "409": {
            "description": "Create identity conflict or capacity reached"
          },
          "412": {
            "description": "The retained placement revision changed before this save."
          },
          "428": {
            "description": "Placement save requires its current revision in If-Match."
          }
        },
        "tags": [
          "Plugins"
        ],
        "summary": "Save a widget placement",
        "description": "Create a placement under a client-selected UUID or update its saved options and enabled state. Updates require the quoted revision in If-Match; an identical create replay returns the retained placement."
      },
      "delete": {
        "operationId": "DeletePluginWidget",
        "security": [
          {
            "PluginService": []
          }
        ],
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "description": "Current quoted placement revision from ETag. Required to delete this placement.",
            "example": "\"1\""
          }
        ],
        "responses": {
          "204": {
            "description": "Configuration removed, source data untouched"
          },
          "401": {
            "description": "A valid BFF service credential is required to delete widget configuration."
          },
          "404": {
            "description": "Placement absent"
          },
          "412": {
            "description": "The retained placement revision changed before this deletion."
          },
          "428": {
            "description": "Placement deletion requires its current revision in If-Match."
          }
        },
        "tags": [
          "Plugins"
        ],
        "summary": "Remove a widget placement",
        "description": "Delete saved widget configuration using its current quoted If-Match revision. This does not modify data in the plugin source."
      }
    },
    "/api/v1/plugins": {
      "get": {
        "operationId": "GetPlugins",
        "security": [
          {
            "PluginService": []
          }
        ],
        "responses": {
          "200": {
            "description": "Data-only plugin descriptors, without deployment paths or credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginCatalog"
                },
                "example": {
                  "plugins": [],
                  "problems": []
                }
              }
            }
          },
          "401": {
            "description": "A valid BFF service credential is required to list installed plugins."
          },
          "503": {
            "description": "The service cannot list installed plugins because required storage or plugin metadata is unavailable."
          }
        },
        "tags": [
          "Plugins"
        ],
        "summary": "List installed plugins",
        "description": "Read local installation and connection metadata without calling plugin processes. Executable paths, configuration secrets and credentials are excluded."
      }
    },
    "/api/v1/plugins/{pluginId}/connections/{connectionId}/queries/{queryId}": {
      "post": {
        "operationId": "QueryPlugin",
        "security": [
          {
            "PluginService": []
          }
        ],
        "parameters": [
          {
            "name": "pluginId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Installed plugin identifier returned by the plugin catalog.",
            "example": "example.status"
          },
          {
            "name": "connectionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Configured connection ID returned by the plugin catalog.",
            "example": "00000000-0000-4000-8000-000000000001"
          },
          {
            "name": "queryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Declared query identifier returned by the connection descriptor.",
            "example": "list"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "input"
                ],
                "additionalProperties": false,
                "properties": {
                  "input": {
                    "type": "object",
                    "additionalProperties": true,
                    "example": {}
                  }
                }
              },
              "example": {
                "input": {}
              }
            }
          },
          "description": "Declared query input object."
        },
        "responses": {
          "200": {
            "description": "Validated cached observation; never performs collection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginQueryResult"
                },
                "example": {
                  "data": {
                    "count": 2
                  },
                  "state": "fresh",
                  "observationRevision": "1",
                  "observedAt": "2026-10-26T12:00:00Z",
                  "lastSuccessAt": "2026-10-26T12:00:00Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid query input"
          },
          "401": {
            "description": "A valid BFF service credential is required to query a plugin observation."
          },
          "403": {
            "description": "Connection disabled or operation not granted"
          },
          "404": {
            "description": "Unknown plugin, connection or operation"
          },
          "409": {
            "description": "Observation revision changed"
          },
          "413": {
            "description": "Query input exceeds limit"
          },
          "429": {
            "description": "Plugin query capacity exceeded"
          },
          "502": {
            "description": "Invalid plugin output"
          },
          "503": {
            "description": "The service cannot query a plugin observation because required storage or plugin metadata is unavailable."
          },
          "504": {
            "description": "Plugin query exceeded the host deadline"
          }
        },
        "tags": [
          "Plugins"
        ],
        "summary": "Query a plugin observation",
        "description": "Run a declared query for one enabled connection with its configured grants. Queries read the cached observation and do not start collection. Input is limited to 64 KiB and host deadlines bound the call."
      }
    },
    "/api/v1/dashboard": {
      "get": {
        "operationId": "GetDashboard",
        "responses": {
          "200": {
            "description": "Selected widgets and unavailable source providers",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardSnapshot"
                },
                "example": {
                  "items": [
                    {
                      "id": "service-57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                      "kind": "service-links",
                      "presentation": "card",
                      "sourceKind": "service",
                      "sourceId": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                      "title": "Grafana",
                      "data": {
                        "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                        "source": {
                          "kind": "container",
                          "id": "atlas"
                        },
                        "resource": {
                          "kind": "container",
                          "name": "grafana"
                        },
                        "displayName": "Grafana",
                        "description": "Metrics and dashboards",
                        "metadata": {
                          "fixture": "synthetic"
                        },
                        "endpoints": [
                          {
                            "name": "https",
                            "url": "https://grafana.example.test",
                            "port": 443,
                            "protocol": "HTTPS",
                            "provenance": "synthetic"
                          }
                        ],
                        "images": [],
                        "observedAt": "2026-10-25T12:00:00Z",
                        "status": "live",
                        "missing": false,
                        "icon": "selfhst:grafana",
                        "address": "",
                        "resources": [
                          {
                            "resource": {
                              "kind": "container",
                              "name": "grafana"
                            },
                            "endpoints": [
                              {
                                "name": "https",
                                "url": "https://grafana.example.test",
                                "port": 443,
                                "protocol": "HTTPS",
                                "provenance": "synthetic"
                              }
                            ],
                            "images": []
                          }
                        ],
                        "pinned": true,
                        "pinnedAt": "2026-10-25T12:00:00Z"
                      },
                      "error": ""
                    }
                  ],
                  "unavailable": []
                }
              }
            }
          },
          "503": {
            "description": "Unable to read the selected homepage widgets because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Dashboard"
        ],
        "summary": "Read the selected homepage widgets",
        "description": "Returns selected service and host widgets. A failed provider is listed in unavailable while other providers can still return items with HTTP 200. A widget can carry an error and an empty data object when its source is no longer available. Responses use Cache-Control: no-store."
      }
    },
    "/api/v1/notifications/push": {
      "get": {
        "operationId": "GetWebPushSettings",
        "summary": "Get Web Push capability and this browser subscription state",
        "description": "Returns whether Web Push is configured and its public VAPID key. An optional private browser token checks only that browser's subscription. Endpoints and encryption secrets are never returned. Responses are not cached.",
        "tags": [
          "Notifications"
        ],
        "security": [
          {
            "NotificationOperator": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Push-Token",
            "schema": {
              "type": "string",
              "maxLength": 43,
              "example": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
            },
            "description": "Optional private browser management token. Never log or put in URLs."
          }
        ],
        "responses": {
          "200": {
            "description": "Capability and subscription status, without private endpoint or keys",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebPushSettings"
                },
                "example": {
                  "enabled": true,
                  "publicKey": "BCPr_tS2j9fUo5L9V9E7n8jUyoMuhzh4o4Kg7KJVSnBVo-lHMht125tqFbP7SdGg_BgGRQ1FsAb4zykeSjAQYro",
                  "subscribed": false
                }
              }
            }
          },
          "400": {
            "description": "Browser status token has invalid encoding or length"
          },
          "401": {
            "description": "A notification operator credential is required to read push settings"
          },
          "503": {
            "description": "Subscription status storage could not be read"
          }
        }
      },
      "post": {
        "operationId": "RegisterWebPush",
        "summary": "Create or renew this browser subscription without replaying the inbox",
        "description": "Stores a valid HTTPS push subscription under a private 32-byte browser token for 90 days. Repeating the same registration renews its lease. Only notifications inserted after registration are queued. Existing endpoint ownership cannot be replaced by another token.",
        "tags": [
          "Notifications"
        ],
        "security": [
          {
            "NotificationOperator": []
          }
        ],
        "requestBody": {
          "description": "Browser-owned subscription and its base64url management token",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebPushRegistration"
              },
              "example": {
                "token": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                "subscription": {
                  "endpoint": "https://push.example.test/device",
                  "keys": {
                    "p256dh": "BCPr_tS2j9fUo5L9V9E7n8jUyoMuhzh4o4Kg7KJVSnBVo-lHMht125tqFbP7SdGg_BgGRQ1FsAb4zykeSjAQYro",
                    "auth": "AAAAAAAAAAAAAAAAAAAAAA"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Subscription saved for 90 days"
          },
          "400": {
            "description": "Registration endpoint or encryption keys are invalid"
          },
          "401": {
            "description": "A notification operator credential is required to register push"
          },
          "409": {
            "description": "Endpoint belongs to a different browser token"
          },
          "429": {
            "description": "Subscription capacity exceeded"
          },
          "503": {
            "description": "Push registration is disabled or its storage is unavailable"
          }
        }
      },
      "delete": {
        "operationId": "DeleteWebPush",
        "summary": "Delete this browser subscription and pending deliveries",
        "description": "Removes the subscription identified by the private browser token and cascades removal of its pending deliveries. Repeating removal succeeds if the subscription is already absent. Other browser subscriptions and retained inbox messages remain.",
        "tags": [
          "Notifications"
        ],
        "security": [
          {
            "NotificationOperator": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Push-Token",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 43,
              "maxLength": 43,
              "example": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
            },
            "description": "Private browser management token identifying the subscription to remove. Never log or put in URLs."
          }
        ],
        "responses": {
          "204": {
            "description": "Browser subscription and its queued jobs removed or already absent"
          },
          "400": {
            "description": "Subscription removal token has invalid encoding or length"
          },
          "401": {
            "description": "A notification operator credential is required to remove push"
          },
          "503": {
            "description": "Subscription removal storage could not be reached"
          }
        }
      }
    },
    "/api/v1/notifications": {
      "delete": {
        "operationId": "ClearNotifications",
        "description": "Permanently remove all stored notifications, read and unread, across sources and pages. This also resets their deduplication identities. Messages committed after the clear statement remain. No source alerts are changed.",
        "security": [
          {
            "NotificationOperator": []
          }
        ],
        "responses": {
          "204": {
            "description": "Inbox cleared, including an already empty inbox"
          },
          "401": {
            "description": "A valid operator credential is required to clear the retained inbox."
          },
          "503": {
            "description": "The service cannot clear the retained inbox because required storage or plugin metadata is unavailable."
          }
        },
        "tags": [
          "Notifications"
        ],
        "summary": "Clear all notifications"
      },
      "get": {
        "operationId": "GetNotifications",
        "security": [
          {
            "NotificationOperator": []
          }
        ],
        "parameters": [
          {
            "name": "before",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Opaque nextCursor from the previous response; omit it for the newest page.",
            "example": "bm90aWZpY2F0aW9uOjU"
          },
          {
            "name": "unread",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Return only unread messages when true. The unread total remains global.",
            "example": true
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 50,
              "default": 50
            },
            "description": "Maximum number of messages in this page, from 1 through 50.",
            "example": 50
          }
        ],
        "responses": {
          "200": {
            "description": "One stable inbox page and unread total",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationPage"
                },
                "example": {
                  "notifications": [
                    {
                      "id": "00000000-0000-4000-8000-000000000001",
                      "source": {
                        "kind": "external",
                        "id": "example-monitor"
                      },
                      "eventId": "maintenance-20261026",
                      "severity": "success",
                      "title": "Maintenance complete",
                      "body": "Datastore maintenance finished.",
                      "occurredAt": "2026-10-26T12:00:00Z",
                      "destination": {
                        "kind": "external",
                        "url": "https://status.example.test/incidents/123"
                      },
                      "receivedAt": "2026-10-26T12:00:00Z",
                      "readAt": null
                    }
                  ],
                  "unreadCount": 1,
                  "retentionDays": 30
                }
              }
            }
          },
          "400": {
            "description": "Invalid cursor or page options"
          },
          "401": {
            "description": "A valid operator credential is required to list retained notifications."
          },
          "503": {
            "description": "The service cannot list retained notifications because required storage or plugin metadata is unavailable."
          }
        },
        "tags": [
          "Notifications"
        ],
        "summary": "List retained notifications",
        "description": "Read an inbox page without marking messages read. Use nextCursor as before for older messages and unread to restrict the page. unreadCount is the global unread total, independent of the page filter."
      },
      "post": {
        "operationId": "PublishNotification",
        "security": [
          {
            "NotificationPublisher": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationPublishRequest"
              },
              "example": {
                "eventId": "maintenance-20261026",
                "severity": "success",
                "title": "Maintenance complete",
                "body": "Datastore maintenance finished.",
                "occurredAt": "2026-10-26T12:00:00Z",
                "destination": {
                  "kind": "external",
                  "url": "https://status.example.test/incidents/123"
                }
              }
            }
          },
          "description": "Immutable event content from the authenticated publisher."
        },
        "responses": {
          "200": {
            "description": "Identical event replay acknowledged",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationReceipt"
                },
                "example": {
                  "id": "00000000-0000-4000-8000-000000000001",
                  "createdAt": "2026-10-26T12:00:00Z",
                  "accepted": true
                }
              }
            }
          },
          "201": {
            "description": "New notification durably accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationReceipt"
                },
                "example": {
                  "id": "00000000-0000-4000-8000-000000000001",
                  "createdAt": "2026-10-26T12:00:00Z",
                  "accepted": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid notification envelope"
          },
          "401": {
            "description": "A valid external publisher credential is required to publish an external notification."
          },
          "404": {
            "description": "External publishing is not configured"
          },
          "409": {
            "description": "Event identity conflicts with immutable content"
          },
          "413": {
            "description": "Request body exceeds 16 KiB"
          },
          "429": {
            "description": "Producer concurrency or inbox capacity exceeded"
          },
          "503": {
            "description": "The service cannot publish an external notification because required storage or plugin metadata is unavailable."
          }
        },
        "tags": [
          "Notifications"
        ],
        "summary": "Publish an external notification",
        "description": "Publish a message using a configured source-bound external publisher credential. An identical eventId replay returns the original receipt; conflicting content returns 409. The operator credential cannot publish, and this endpoint does not mutate source alerts."
      }
    },
    "/api/v1/notifications/read": {
      "put": {
        "operationId": "MarkAllNotificationsRead",
        "security": [
          {
            "NotificationOperator": []
          }
        ],
        "responses": {
          "204": {
            "description": "All retained unread notifications marked read atomically. Already-read timestamps and later publications are preserved."
          },
          "401": {
            "description": "A valid operator credential is required to mark the retained inbox read."
          },
          "503": {
            "description": "The service cannot mark the retained inbox read because required storage or plugin metadata is unavailable."
          }
        },
        "tags": [
          "Notifications"
        ],
        "summary": "Mark all notifications read",
        "description": "Atomically mark retained unread messages as read. Already-read timestamps and messages committed after the update remain unchanged. Source alerts are unaffected."
      }
    },
    "/api/v1/notifications/{notificationId}/read": {
      "parameters": [
        {
          "name": "notificationId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "Identifier of the retained notification to mark read.",
          "example": "00000000-0000-4000-8000-000000000001"
        }
      ],
      "put": {
        "operationId": "MarkNotificationRead",
        "security": [
          {
            "NotificationOperator": []
          }
        ],
        "responses": {
          "204": {
            "description": "Notification marked read, including an idempotent replay"
          },
          "401": {
            "description": "A valid operator credential is required to mark this notification read."
          },
          "404": {
            "description": "The notification to mark read is no longer retained."
          },
          "503": {
            "description": "The service cannot mark this notification read because required storage or plugin metadata is unavailable."
          }
        },
        "tags": [
          "Notifications"
        ],
        "summary": "Mark a notification read",
        "description": "Set the read timestamp for one retained notification. Repeated requests preserve the original read timestamp and do not resolve or modify source alerts."
      }
    },
    "/api/v1/notifications/{notificationId}": {
      "parameters": [
        {
          "name": "notificationId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "Identifier of the retained notification to inspect.",
          "example": "00000000-0000-4000-8000-000000000001"
        }
      ],
      "get": {
        "operationId": "GetNotification",
        "security": [
          {
            "NotificationOperator": []
          }
        ],
        "responses": {
          "200": {
            "description": "One notification without changing its read state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Notification"
                },
                "example": {
                  "id": "00000000-0000-4000-8000-000000000001",
                  "source": {
                    "kind": "external",
                    "id": "example-monitor"
                  },
                  "eventId": "maintenance-20261026",
                  "severity": "success",
                  "title": "Maintenance complete",
                  "body": "Datastore maintenance finished.",
                  "occurredAt": "2026-10-26T12:00:00Z",
                  "destination": {
                    "kind": "external",
                    "url": "https://status.example.test/incidents/123"
                  },
                  "receivedAt": "2026-10-26T12:00:00Z",
                  "readAt": null
                }
              }
            }
          },
          "401": {
            "description": "A valid operator credential is required to read this notification."
          },
          "404": {
            "description": "No retained notification has the requested identifier."
          },
          "503": {
            "description": "The service cannot read this notification because required storage or plugin metadata is unavailable."
          }
        },
        "tags": [
          "Notifications"
        ],
        "summary": "Read a notification",
        "description": "Read one retained notification by ID without changing its read state or opening its destination."
      }
    },
    "/api/v1/dashboard/widgets/{sourceKind}/{sourceId}": {
      "put": {
        "operationId": "SetDashboardSelection",
        "parameters": [
          {
            "name": "sourceKind",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Selection provider. Use service for a catalog pin or host for a telemetry widget.",
            "example": "host"
          },
          {
            "name": "sourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Opaque ID returned by the service catalog or host list for the chosen provider.",
            "example": "485497dc6417c5261c07e22ad6153c982eb4e0613c6a4bd568b361bc20190bbf"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "enabled"
                ],
                "additionalProperties": false,
                "properties": {
                  "enabled": {
                    "type": "boolean",
                    "description": "Whether this source should be selected for the homepage.",
                    "example": true
                  }
                },
                "example": {
                  "enabled": true
                }
              },
              "example": {
                "enabled": true
              }
            }
          },
          "description": "Desired selection state. Both enabled=true and enabled=false are explicit, repeatable operations."
        },
        "responses": {
          "204": {
            "description": "Desired selection saved, including repeated requests"
          },
          "400": {
            "description": "Malformed selection JSON, unsupported provider, or invalid source ID.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Invalid selection\n"
                },
                "example": "Invalid selection\n"
              }
            }
          },
          "404": {
            "description": "The source to enable no longer exists.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Source not found\n"
                },
                "example": "Source not found\n"
              }
            }
          },
          "409": {
            "description": "The host selection limit is reached or a service changed state before selection.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Selection limit reached or source state changed\n"
                },
                "example": "Selection limit reached or source state changed\n"
              }
            }
          },
          "503": {
            "description": "Unable to set a widget selection because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Dashboard"
        ],
        "summary": "Set a widget selection",
        "description": "Set enabled to true or false for a service or host ID obtained from the catalog or host list. Repeated requests set the same desired state. Service selection uses the catalog pin rules, so a hidden or missing service cannot be enabled. Host selections are retained separately, with a maximum of 128 selected hosts. Disabling a removed host is allowed so its stale widget can be cleared."
      }
    },
    "/api/v1/hosts": {
      "get": {
        "operationId": "GetHosts",
        "responses": {
          "200": {
            "description": "Registered and discovered source roots",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "hosts"
                  ],
                  "properties": {
                    "hosts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Host"
                      },
                      "description": "Docker machines and Kubernetes clusters registered at this gateway.",
                      "example": [
                        {
                          "cpuPercent": 23.4,
                          "memoryUsedBytes": 8589934592,
                          "memoryTotalBytes": 34359738368,
                          "node": "",
                          "architecture": "amd64",
                          "inventoryAvailable": true,
                          "ready": "",
                          "workloads": [
                            {
                              "name": "grafana",
                              "namespace": "",
                              "state": "running",
                              "restarts": 0
                            }
                          ],
                          "id": "485497dc6417c5261c07e22ad6153c982eb4e0613c6a4bd568b361bc20190bbf",
                          "name": "atlas",
                          "kind": "docker",
                          "source": {
                            "kind": "container",
                            "id": "atlas"
                          },
                          "parentId": "",
                          "observedAt": "2026-10-25T12:00:00Z",
                          "receivedAt": "2026-10-25T12:00:00Z",
                          "status": "fresh"
                        }
                      ]
                    }
                  },
                  "description": "Registered source roots, excluding Kubernetes child nodes.",
                  "example": {
                    "hosts": [
                      {
                        "cpuPercent": 23.4,
                        "memoryUsedBytes": 8589934592,
                        "memoryTotalBytes": 34359738368,
                        "node": "",
                        "architecture": "amd64",
                        "inventoryAvailable": true,
                        "ready": "",
                        "workloads": [
                          {
                            "name": "grafana",
                            "namespace": "",
                            "state": "running",
                            "restarts": 0
                          }
                        ],
                        "id": "485497dc6417c5261c07e22ad6153c982eb4e0613c6a4bd568b361bc20190bbf",
                        "name": "atlas",
                        "kind": "docker",
                        "source": {
                          "kind": "container",
                          "id": "atlas"
                        },
                        "parentId": "",
                        "observedAt": "2026-10-25T12:00:00Z",
                        "receivedAt": "2026-10-25T12:00:00Z",
                        "status": "fresh"
                      }
                    ]
                  }
                },
                "example": {
                  "hosts": [
                    {
                      "cpuPercent": 23.4,
                      "memoryUsedBytes": 8589934592,
                      "memoryTotalBytes": 34359738368,
                      "node": "",
                      "architecture": "amd64",
                      "inventoryAvailable": true,
                      "ready": "",
                      "workloads": [
                        {
                          "name": "grafana",
                          "namespace": "",
                          "state": "running",
                          "restarts": 0
                        }
                      ],
                      "id": "485497dc6417c5261c07e22ad6153c982eb4e0613c6a4bd568b361bc20190bbf",
                      "name": "atlas",
                      "kind": "docker",
                      "source": {
                        "kind": "container",
                        "id": "atlas"
                      },
                      "parentId": "",
                      "observedAt": "2026-10-25T12:00:00Z",
                      "receivedAt": "2026-10-25T12:00:00Z",
                      "status": "fresh"
                    }
                  ]
                }
              }
            }
          },
          "503": {
            "description": "Unable to list registered host roots because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Hosts"
        ],
        "summary": "List registered host roots",
        "description": "Returns Docker host and Kubernetes cluster roots, including registered discovery-only sources with status unavailable before their first telemetry report. Kubernetes nodes are children of a cluster and appear in that cluster's detail response, not in this top-level list. No live collection is triggered."
      }
    },
    "/api/v1/hosts/{hostId}": {
      "get": {
        "operationId": "GetHost",
        "parameters": [
          {
            "name": "hostId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Stable host ID returned by GET /api/v1/hosts or a cluster detail response.",
            "example": "485497dc6417c5261c07e22ad6153c982eb4e0613c6a4bd568b361bc20190bbf"
          },
          {
            "name": "range",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "1h",
                "24h"
              ],
              "default": "1h"
            },
            "description": "History interval. Defaults to 1h and accepts only 1h or 24h; returns one UTC minute slot per minute.",
            "example": "1h"
          }
        ],
        "responses": {
          "200": {
            "description": "Host detail with one-minute samples and explicit null gaps",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HostDetail"
                },
                "example": {
                  "host": {
                    "cpuPercent": 23.4,
                    "memoryUsedBytes": 8589934592,
                    "memoryTotalBytes": 34359738368,
                    "node": "",
                    "architecture": "amd64",
                    "inventoryAvailable": true,
                    "ready": "",
                    "workloads": [
                      {
                        "name": "grafana",
                        "namespace": "",
                        "state": "running",
                        "restarts": 0
                      }
                    ],
                    "id": "485497dc6417c5261c07e22ad6153c982eb4e0613c6a4bd568b361bc20190bbf",
                    "name": "atlas",
                    "kind": "docker",
                    "source": {
                      "kind": "container",
                      "id": "atlas"
                    },
                    "parentId": "",
                    "observedAt": "2026-10-25T12:00:00Z",
                    "receivedAt": "2026-10-25T12:00:00Z",
                    "status": "fresh"
                  },
                  "children": [],
                  "samples": [
                    {
                      "cpuPercent": 23.4,
                      "memoryUsedBytes": 8589934592,
                      "memoryTotalBytes": 34359738368,
                      "at": "2026-10-25T12:00:00Z"
                    }
                  ],
                  "range": "1h"
                }
              }
            }
          },
          "400": {
            "description": "Unsupported history range; choose 1h or 24h.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "invalid range\n"
                },
                "example": "invalid range\n"
              }
            }
          },
          "404": {
            "description": "The requested host ID has no retained registration or observation.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "404 page not found\n"
                },
                "example": "404 page not found\n"
              }
            }
          },
          "503": {
            "description": "Unable to read a host and its usage history because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Hosts"
        ],
        "summary": "Read a host and its usage history",
        "description": "Returns the latest observation, direct child nodes, and one-minute history for 1h or 24h. Those ranges contain 60 or 1440 UTC minute slots, respectively, including the current minute. Missing measurements are explicit null values, not zero usage. Collection runs independently once per minute. The example is a one-sample excerpt. A stale report does not prove the host is offline."
      }
    },
    "/api/v1/federation/telemetry": {
      "post": {
        "operationId": "ImportTelemetry",
        "security": [
          {
            "FederationBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TelemetryBatch"
              },
              "example": {
                "source": {
                  "kind": "container",
                  "id": "atlas"
                },
                "observedAt": "2026-10-25T12:00:00Z",
                "hosts": [
                  {
                    "cpuPercent": 23.4,
                    "memoryUsedBytes": 8589934592,
                    "memoryTotalBytes": 34359738368,
                    "node": "",
                    "architecture": "amd64",
                    "inventoryAvailable": true,
                    "ready": "",
                    "workloads": [
                      {
                        "name": "grafana",
                        "namespace": "",
                        "state": "running",
                        "restarts": 0
                      }
                    ]
                  }
                ]
              }
            }
          },
          "description": "Root and optional child reports for exactly one registered source. Use a current UTC collection time."
        },
        "responses": {
          "204": {
            "description": "Accepted, including an already processed observation"
          },
          "400": {
            "description": "Invalid telemetry fields, observation time, or retained-host limit.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "invalid telemetry body\n"
                },
                "example": "invalid telemetry body\n"
              }
            }
          },
          "401": {
            "description": "Missing or incorrect telemetry source credential.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "source not authorized\n"
                },
                "example": "source not authorized\n"
              }
            }
          },
          "403": {
            "description": "This telemetry source is not registered at the gateway.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "source not authorized\n"
                },
                "example": "source not authorized\n"
              }
            }
          },
          "413": {
            "description": "The telemetry body exceeds the 2 MiB request limit.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "invalid telemetry body\n"
                },
                "example": "invalid telemetry body\n"
              }
            }
          },
          "503": {
            "description": "Unable to import a host telemetry report because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Federation"
        ],
        "summary": "Import a host telemetry report",
        "description": "Accepts one source-scoped batch, limited to 2 MiB, 128 retained hosts per source, and 1000 workloads per host. Include the root observation with node set to an empty string; container sources must contain exactly that root. Node names must be unique in the batch. Observation times must be within the previous 24 hours and no more than 30 seconds in the future. Older or repeated reports are acknowledged without advancing stored state or heartbeat. Unknown JSON fields are rejected. This endpoint updates telemetry only; it does not discover services or change pins."
      }
    },
    "/healthz": {
      "get": {
        "operationId": "GetHealthz",
        "responses": {
          "200": {
            "description": "Service is healthy",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthResponse"
                },
                "example": {
                  "status": "ok"
                }
              }
            }
          },
          "503": {
            "description": "Unable to check API readiness because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "service unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Health"
        ],
        "summary": "Check API readiness",
        "description": "Checks the configured health checker, including SQLite connectivity. A 200 confirms API readiness, not the health of discovered applications. This request does not trigger a scan."
      }
    },
    "/api/v1/staging/services": {
      "post": {
        "operationId": "CreateManualService",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManualServiceCreate"
              },
              "example": {
                "requestId": "0123456789abcdef0123456789abcdef",
                "displayName": "Grafana",
                "description": "Metrics and dashboards",
                "address": "https://grafana.example.test",
                "icon": "selfhst:grafana"
              }
            }
          },
          "description": "Manual entry and retry key. Creation and replay return the current service with the same requestId."
        },
        "responses": {
          "201": {
            "description": "Manual service created, or current record returned for a repeated requestId",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceCandidate"
                },
                "example": {
                  "id": "f6d033600bf1d23eea5dc5cc8b9526103d377807b556245060d5fc361b7d27a6",
                  "source": {
                    "kind": "manual",
                    "id": "local"
                  },
                  "resource": {
                    "kind": "service",
                    "name": "0123456789abcdef0123456789abcdef"
                  },
                  "displayName": "Grafana",
                  "description": "Metrics and dashboards",
                  "metadata": {},
                  "endpoints": [],
                  "images": null,
                  "observedAt": "2026-10-25T12:00:00Z",
                  "status": "live",
                  "missing": false,
                  "icon": "selfhst:grafana",
                  "address": "https://grafana.example.test",
                  "resources": [],
                  "pinned": false,
                  "pinnedAt": null
                }
              }
            },
            "headers": {
              "Location": {
                "description": "API path of the current manual entry, including on requestId replay.",
                "schema": {
                  "type": "string"
                },
                "example": "/api/v1/staging/services/f6d033600bf1d23eea5dc5cc8b9526103d377807b556245060d5fc361b7d27a6"
              }
            }
          },
          "400": {
            "description": "Invalid manual service name, address, icon, retry key, or JSON body.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Invalid service\n"
                },
                "example": "Invalid service\n"
              }
            }
          },
          "503": {
            "description": "Unable to create a manual service because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Services"
        ],
        "summary": "Create a manual service",
        "description": "Creates one live, initially unpinned service under the reserved manual/local source. Supply a client-generated 32-character hexadecimal requestId and reuse it after an ambiguous transport failure. A repeated request returns the existing record without overwriting later edits. Both first creation and replay return 201 and Location. The address must be absolute HTTP(S) without credentials. Pin the returned ID separately to show it on the homepage. Manual entries survive discovery scans and can be hidden through lifecycle actions."
      },
      "get": {
        "operationId": "GetStagingServices",
        "responses": {
          "200": {
            "description": "Discovered service candidates",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceListResponse"
                },
                "example": {
                  "services": [
                    {
                      "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                      "source": {
                        "kind": "container",
                        "id": "atlas"
                      },
                      "resource": {
                        "kind": "container",
                        "name": "grafana"
                      },
                      "displayName": "Grafana",
                      "description": "Metrics and dashboards",
                      "metadata": {
                        "fixture": "synthetic"
                      },
                      "endpoints": [
                        {
                          "name": "https",
                          "url": "https://grafana.example.test",
                          "port": 443,
                          "protocol": "HTTPS",
                          "provenance": "synthetic"
                        }
                      ],
                      "images": [],
                      "observedAt": "2026-10-25T12:00:00Z",
                      "status": "live",
                      "missing": false,
                      "icon": "selfhst:grafana",
                      "address": "",
                      "resources": [
                        {
                          "resource": {
                            "kind": "container",
                            "name": "grafana"
                          },
                          "endpoints": [
                            {
                              "name": "https",
                              "url": "https://grafana.example.test",
                              "port": 443,
                              "protocol": "HTTPS",
                              "provenance": "synthetic"
                            }
                          ],
                          "images": []
                        }
                      ],
                      "pinned": true,
                      "pinnedAt": "2026-10-25T12:00:00Z"
                    }
                  ]
                }
              }
            }
          },
          "503": {
            "description": "Unable to list services for review because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Services"
        ],
        "summary": "List services for review",
        "description": "Returns grouped discovered and manual services, including live, missing, and hidden entries. Filter the returned status in your client; this endpoint has no pagination or status query parameter. Pinning and local presentation overrides are independent of discovery. Endpoint evidence does not guarantee a healthy or publicly reachable application."
      }
    },
    "/api/v1/staging/services/{serviceId}": {
      "parameters": [
        {
          "name": "serviceId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "Catalog group to edit. Obtain its ID from the staging response.",
          "example": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14"
        }
      ],
      "put": {
        "operationId": "EditStagingService",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceEdit"
              },
              "example": {
                "displayName": "Grafana",
                "description": "Metrics and dashboards",
                "address": "https://grafana.example.test",
                "icon": "selfhst:grafana"
              }
            }
          },
          "description": "Complete display settings with optional icon preservation/reset behavior."
        },
        "responses": {
          "204": {
            "description": "Local presentation saved, independently of discovery"
          },
          "400": {
            "description": "Invalid display fields, icon reference, or edit JSON.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Invalid edit\n"
                },
                "example": "Invalid edit\n"
              }
            }
          },
          "404": {
            "description": "The catalog group no longer exists for the request to save service display settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "not_found",
                  "message": "service candidate not found"
                }
              }
            }
          },
          "503": {
            "description": "Unable to save service display settings because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Services"
        ],
        "summary": "Save service display settings",
        "description": "Saves local presentation independently of discovery. displayName, description, and address are required, including when their value is empty. An empty address restores discovered endpoints for discovered services; manual services still require an address. Omitting icon preserves its current choice, while an empty icon restores the discovery default. Accepts one JSON object up to 16 KiB and rejects unknown fields. A successful update has no response body."
      }
    },
    "/api/v1/staging/services/{serviceId}/pin": {
      "parameters": [
        {
          "name": "serviceId",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "Service group whose homepage pin should change. Use the ID returned by the catalog.",
          "example": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14"
        }
      ],
      "post": {
        "operationId": "PinStagingService",
        "responses": {
          "200": {
            "description": "Updated pinned service candidate",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceCandidate"
                },
                "example": {
                  "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                  "source": {
                    "kind": "container",
                    "id": "atlas"
                  },
                  "resource": {
                    "kind": "container",
                    "name": "grafana"
                  },
                  "displayName": "Grafana",
                  "description": "Metrics and dashboards",
                  "metadata": {
                    "fixture": "synthetic"
                  },
                  "endpoints": [
                    {
                      "name": "https",
                      "url": "https://grafana.example.test",
                      "port": 443,
                      "protocol": "HTTPS",
                      "provenance": "synthetic"
                    }
                  ],
                  "images": [],
                  "observedAt": "2026-10-25T12:00:00Z",
                  "status": "live",
                  "missing": false,
                  "icon": "selfhst:grafana",
                  "address": "",
                  "resources": [
                    {
                      "resource": {
                        "kind": "container",
                        "name": "grafana"
                      },
                      "endpoints": [
                        {
                          "name": "https",
                          "url": "https://grafana.example.test",
                          "port": 443,
                          "protocol": "HTTPS",
                          "provenance": "synthetic"
                        }
                      ],
                      "images": []
                    }
                  ],
                  "pinned": true,
                  "pinnedAt": "2026-10-25T12:00:00Z"
                }
              }
            }
          },
          "404": {
            "description": "The catalog group no longer exists for the request to pin a live service.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "not_found",
                  "message": "service candidate not found"
                }
              }
            }
          },
          "409": {
            "description": "Current catalog state does not allow this request to pin a live service; refresh Staging before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "conflict",
                  "message": "Service state changed. Refresh before trying again."
                }
              }
            }
          },
          "503": {
            "description": "Unable to pin a live service because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Services"
        ],
        "summary": "Pin a live service",
        "description": "Adds a live, visible service group to the homepage and returns its current catalog representation. Repeating a pin keeps the service pinned. A hidden or missing group returns 409; re-read Staging before trying again. Pins survive later discovery refreshes."
      },
      "delete": {
        "operationId": "UnpinStagingService",
        "responses": {
          "200": {
            "description": "Updated unpinned service candidate",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceCandidate"
                },
                "example": {
                  "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                  "source": {
                    "kind": "container",
                    "id": "atlas"
                  },
                  "resource": {
                    "kind": "container",
                    "name": "grafana"
                  },
                  "displayName": "Grafana",
                  "description": "Metrics and dashboards",
                  "metadata": {
                    "fixture": "synthetic"
                  },
                  "endpoints": [
                    {
                      "name": "https",
                      "url": "https://grafana.example.test",
                      "port": 443,
                      "protocol": "HTTPS",
                      "provenance": "synthetic"
                    }
                  ],
                  "images": [],
                  "observedAt": "2026-10-25T12:00:00Z",
                  "status": "live",
                  "missing": false,
                  "icon": "selfhst:grafana",
                  "address": "",
                  "resources": [
                    {
                      "resource": {
                        "kind": "container",
                        "name": "grafana"
                      },
                      "endpoints": [
                        {
                          "name": "https",
                          "url": "https://grafana.example.test",
                          "port": 443,
                          "protocol": "HTTPS",
                          "provenance": "synthetic"
                        }
                      ],
                      "images": []
                    }
                  ],
                  "pinned": false,
                  "pinnedAt": null
                }
              }
            }
          },
          "404": {
            "description": "The catalog group no longer exists for the request to unpin a service.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "not_found",
                  "message": "service candidate not found"
                }
              }
            }
          },
          "503": {
            "description": "Unable to unpin a service because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Services"
        ],
        "summary": "Unpin a service",
        "description": "Removes the service group from the homepage without deleting discovery data or saved display settings. Repeating an unpin leaves it unpinned. Related member pins are cleared with the group so a grouped service does not remain visible through an older member selection."
      }
    },
    "/api/v1/homepage/services": {
      "get": {
        "operationId": "GetHomepageServices",
        "responses": {
          "200": {
            "description": "Pinned homepage services",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceListResponse"
                },
                "example": {
                  "services": [
                    {
                      "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                      "source": {
                        "kind": "container",
                        "id": "atlas"
                      },
                      "resource": {
                        "kind": "container",
                        "name": "grafana"
                      },
                      "displayName": "Grafana",
                      "description": "Metrics and dashboards",
                      "metadata": {
                        "fixture": "synthetic"
                      },
                      "endpoints": [
                        {
                          "name": "https",
                          "url": "https://grafana.example.test",
                          "port": 443,
                          "protocol": "HTTPS",
                          "provenance": "synthetic"
                        }
                      ],
                      "images": [],
                      "observedAt": "2026-10-25T12:00:00Z",
                      "status": "live",
                      "missing": false,
                      "icon": "selfhst:grafana",
                      "address": "",
                      "resources": [
                        {
                          "resource": {
                            "kind": "container",
                            "name": "grafana"
                          },
                          "endpoints": [
                            {
                              "name": "https",
                              "url": "https://grafana.example.test",
                              "port": 443,
                              "protocol": "HTTPS",
                              "provenance": "synthetic"
                            }
                          ],
                          "images": []
                        }
                      ],
                      "pinned": true,
                      "pinnedAt": "2026-10-25T12:00:00Z"
                    }
                  ]
                }
              }
            }
          },
          "503": {
            "description": "Unable to list pinned live services because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Services"
        ],
        "summary": "List pinned live services",
        "description": "Returns the service groups currently eligible for homepage cards: pinned, live, and visible. Hidden and missing services are excluded even when their pin preference remains saved. Use the staging list when you need those entries or want to change their presentation."
      }
    },
    "/api/v1/discovery/sync": {
      "post": {
        "operationId": "SyncDiscovery",
        "responses": {
          "200": {
            "description": "Discovery synchronization result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DiscoverySyncResponse"
                },
                "example": {
                  "sources": 1,
                  "candidates": 1
                }
              }
            }
          },
          "503": {
            "description": "Unable to synchronize local discovery sources because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Discovery"
        ],
        "summary": "Synchronize local discovery sources",
        "description": "Runs a scan of the discovery sources configured on this API process and returns source and candidate counts. This request does not force remote federated agents to scan. A complete successful source snapshot marks absent observations missing; a failed source scan does not mark its catalog entries missing. Display edits and pin preferences survive synchronization. New candidates remain unpinned."
      }
    },
    "/api/v1/federation/snapshots": {
      "post": {
        "operationId": "ImportFederationSnapshot",
        "security": [
          {
            "FederationBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FederationSnapshot"
              },
              "example": {
                "source": {
                  "kind": "container",
                  "id": "atlas"
                },
                "candidates": [
                  {
                    "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                    "source": {
                      "kind": "container",
                      "id": "atlas"
                    },
                    "resource": {
                      "kind": "container",
                      "name": "grafana"
                    },
                    "displayName": "Grafana",
                    "description": "Metrics and dashboards",
                    "metadata": {
                      "fixture": "synthetic"
                    },
                    "endpoints": [
                      {
                        "name": "https",
                        "url": "https://grafana.example.test",
                        "port": 443,
                        "protocol": "HTTPS",
                        "provenance": "synthetic"
                      }
                    ],
                    "images": [],
                    "observedAt": "2026-10-25T12:00:00Z"
                  }
                ],
                "observedAt": "2026-10-25T12:00:00Z"
              }
            }
          },
          "description": "Complete observed candidate set for one source. Never submit an empty set to represent a failed scan."
        },
        "responses": {
          "200": {
            "description": "Federated discovery snapshot imported",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DiscoverySyncResponse"
                },
                "example": {
                  "sources": 1,
                  "candidates": 1
                }
              }
            }
          },
          "400": {
            "description": "Snapshot is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "invalid_snapshot",
                  "message": "invalid federation snapshot"
                }
              }
            }
          },
          "401": {
            "description": "Federation credentials are invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unauthorized",
                  "message": "invalid federation credentials"
                }
              }
            }
          },
          "403": {
            "description": "Source is not registered at this gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "source_not_registered",
                  "message": "federation source is not registered"
                }
              }
            }
          },
          "404": {
            "description": "Federation ingestion is not enabled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "federation_disabled",
                  "message": "federation ingestion is not enabled"
                }
              }
            }
          },
          "413": {
            "description": "Snapshot exceeds the maximum accepted payload size",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "payload_too_large",
                  "message": "federation snapshot exceeds the maximum size"
                }
              }
            }
          },
          "503": {
            "description": "Unable to import a complete discovery snapshot because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Federation"
        ],
        "summary": "Import a complete discovery snapshot",
        "description": "Replaces observations for one registered source using its source-bound Bearer credential. Every candidate must carry that same source and a valid deterministic ID. candidates is the complete source snapshot: an empty array marks its prior observations missing. Older or repeated snapshots do not replace newer catalog state. The gateway retains its own edits and pins. The request is limited to 2 MiB. A disabled snapshot importer returns 404. Replace the example timestamps with current UTC before sending."
      }
    },
    "/api/v1/staging/services/{serviceId}/lifecycle": {
      "post": {
        "operationId": "changeServiceLifecycle",
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current catalog group to hide, show, or purge. Re-read Staging if its state has changed.",
            "example": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "action"
                ],
                "properties": {
                  "action": {
                    "type": "string",
                    "enum": [
                      "hide",
                      "show",
                      "purge"
                    ],
                    "description": "hide suppresses a live service, show restores visibility, and purge permanently deletes only missing observations.",
                    "example": "hide"
                  }
                },
                "example": {
                  "action": "hide"
                }
              },
              "example": {
                "action": "hide"
              }
            }
          },
          "description": "One lifecycle action evaluated against current catalog state."
        },
        "responses": {
          "204": {
            "description": "Visibility changed or missing resource permanently deleted"
          },
          "400": {
            "description": "The lifecycle action is absent, unknown, or malformed JSON.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Invalid action\n"
                },
                "example": "Invalid action\n"
              }
            }
          },
          "404": {
            "description": "The catalog group no longer exists for the request to hide, restore, or purge a service group.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "not_found",
                  "message": "service candidate not found"
                }
              }
            }
          },
          "409": {
            "description": "Current catalog state does not allow this request to hide, restore, or purge a service group; refresh Staging before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "conflict",
                  "message": "Service state changed. Refresh before trying again."
                }
              }
            }
          },
          "503": {
            "description": "Unable to hide, restore, or purge a service group because required storage or a provider is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "code": "unavailable",
                  "message": "catalog unavailable"
                }
              }
            }
          }
        },
        "tags": [
          "Services"
        ],
        "summary": "Hide, restore, or purge a service group",
        "description": "hide suppresses a live group while preserving its settings and pin choice; repeated hide is allowed. show restores a hidden group to live or missing according to discovery presence. purge permanently removes only missing observations and their saved edits, endpoints, and pins; still-live shared observations and uploaded icon files remain. A rediscovered purged service starts with discovery defaults. Current state is checked in the write transaction; refresh after 409 instead of blindly retrying. This changes the catalog only and never stops workloads."
      }
    },
    "/api/v1/icons": {
      "get": {
        "operationId": "listIcons",
        "responses": {
          "200": {
            "description": "Uploaded icons",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UploadedIcon"
                  },
                  "example": [
                    {
                      "id": "upload:EXAMPLE",
                      "name": "Lab icon",
                      "tags": "lab,green",
                      "mime": "image/svg+xml",
                      "digest": "862019886d8c1034c41a62f1972409e18c6f76427f279a2e86469c28ee0cfe77",
                      "usedBy": []
                    }
                  ]
                },
                "example": [
                  {
                    "id": "upload:EXAMPLE",
                    "name": "Lab icon",
                    "tags": "lab,green",
                    "mime": "image/svg+xml",
                    "digest": "862019886d8c1034c41a62f1972409e18c6f76427f279a2e86469c28ee0cfe77",
                    "usedBy": []
                  }
                ]
              }
            }
          },
          "503": {
            "description": "Uploaded image storage is unavailable while attempting to list uploaded icons.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Icons unavailable\n"
                },
                "example": "Icons unavailable\n"
              }
            }
          }
        },
        "tags": [
          "Icons"
        ],
        "summary": "List uploaded icons",
        "description": "Returns uploaded icon metadata sorted by name and ID, with the display names of services using each icon. This endpoint does not enumerate the bundled Goshtoso or selfh.st collections. Binary images are fetched separately. An empty uploaded library returns an empty array."
      },
      "post": {
        "operationId": "uploadIcon",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IconUpload"
              },
              "example": {
                "name": "Lab icon",
                "tags": "lab,green",
                "data": "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj48cmVjdCB4PSI0IiB5PSI0IiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHJ4PSI0IiBmaWxsPSIjODRjYzE2Ii8+PC9zdmc+"
              }
            }
          },
          "description": "Image name, tags, and nonempty Base64-encoded bytes for a new upload."
        },
        "responses": {
          "201": {
            "description": "Icon stored",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadedIcon"
                },
                "example": {
                  "id": "upload:EXAMPLE",
                  "name": "Lab icon",
                  "tags": "lab,green",
                  "mime": "image/svg+xml",
                  "digest": "862019886d8c1034c41a62f1972409e18c6f76427f279a2e86469c28ee0cfe77",
                  "usedBy": []
                }
              }
            }
          },
          "400": {
            "description": "The icon metadata, image, or JSON body is invalid. Operation: Upload a service icon.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Bad Request\n"
                },
                "example": "Bad Request\n"
              }
            }
          },
          "503": {
            "description": "Uploaded image storage is unavailable while attempting to upload a service icon.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Icons unavailable\n"
                },
                "example": "Icons unavailable\n"
              }
            }
          }
        },
        "tags": [
          "Icons"
        ],
        "summary": "Upload a service icon",
        "description": "Creates an uploaded icon from Base64-encoded image bytes. data is required in practice for creation, even though the shared update schema allows it to be omitted. Supported formats are PNG, JPEG, WebP, and passive SVG, limited to 2 MiB and 4096 pixels. SVG scripts, CSS, embedded images, and external references are rejected. The JSON request is limited to 3 MiB. Use the returned upload: ID in a service edit; storing an icon does not select it for a service."
      }
    },
    "/api/v1/icons/{iconID}": {
      "parameters": [
        {
          "name": "iconID",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "Uploaded icon reference returned by icon creation or listing, including its upload: prefix.",
          "example": "upload:EXAMPLE"
        }
      ],
      "put": {
        "operationId": "updateIcon",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IconUpload"
              },
              "example": {
                "name": "Lab icon",
                "tags": "lab,green",
                "digest": "862019886d8c1034c41a62f1972409e18c6f76427f279a2e86469c28ee0cfe77"
              }
            }
          },
          "description": "Replacement metadata and current revision, with optional replacement image bytes."
        },
        "responses": {
          "200": {
            "description": "Icon updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadedIcon"
                },
                "example": {
                  "id": "upload:EXAMPLE",
                  "name": "Lab icon",
                  "tags": "lab,green",
                  "mime": "image/svg+xml",
                  "digest": "862019886d8c1034c41a62f1972409e18c6f76427f279a2e86469c28ee0cfe77",
                  "usedBy": []
                }
              }
            }
          },
          "400": {
            "description": "The icon metadata, image, or JSON body is invalid. Operation: Update an uploaded icon revision.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Bad Request\n"
                },
                "example": "Bad Request\n"
              }
            }
          },
          "404": {
            "description": "This uploaded icon cannot be found. Operation: Update an uploaded icon revision.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Not Found\n"
                },
                "example": "Not Found\n"
              }
            }
          },
          "409": {
            "description": "The uploaded icon changed, remains in use, or cannot be deleted at this revision. Operation: Update an uploaded icon revision.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Conflict\n"
                },
                "example": "Conflict\n"
              }
            }
          },
          "503": {
            "description": "Uploaded image storage is unavailable while attempting to update an uploaded icon revision.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Icons unavailable\n"
                },
                "example": "Icons unavailable\n"
              }
            }
          }
        },
        "tags": [
          "Icons"
        ],
        "summary": "Update an uploaded icon revision",
        "description": "Updates an existing uploaded icon without changing its ID, so referencing services keep their choice. Send the current digest from the icon list. Omitting data or sending empty data keeps the current bytes while changing name or tags. A stale or missing revision returns 409; list icons again before retrying. Validation and request size limits match icon upload."
      },
      "delete": {
        "operationId": "deleteIcon",
        "parameters": [
          {
            "name": "digest",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Current icon revision from the uploaded icon list. Deletion fails with 409 if the revision changed or the icon is in use.",
            "example": "862019886d8c1034c41a62f1972409e18c6f76427f279a2e86469c28ee0cfe77"
          }
        ],
        "responses": {
          "204": {
            "description": "Unused icon deleted"
          },
          "409": {
            "description": "The uploaded icon changed, remains in use, or cannot be deleted at this revision. Operation: Delete an unused uploaded icon.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Conflict\n"
                },
                "example": "Conflict\n"
              }
            }
          },
          "503": {
            "description": "Uploaded image storage is unavailable while attempting to delete an unused uploaded icon.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Icons unavailable\n"
                },
                "example": "Icons unavailable\n"
              }
            }
          }
        },
        "tags": [
          "Icons"
        ],
        "summary": "Delete an unused uploaded icon",
        "description": "Deletes only when the supplied digest matches the current revision and no service references the icon. Returns 409 for an icon that is in use, changed, or no longer exists. Re-read the icon list before retrying. Bundled icons cannot be deleted with this endpoint."
      }
    },
    "/api/v1/icons/{iconID}/image": {
      "parameters": [
        {
          "name": "iconID",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          },
          "description": "Uploaded image to download. Use its complete upload: reference from the icon list.",
          "example": "upload:EXAMPLE"
        }
      ],
      "get": {
        "operationId": "getIconImage",
        "responses": {
          "200": {
            "description": "Validated image",
            "content": {
              "image/*": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                },
                "examples": {
                  "png": {
                    "summary": "Illustrative PNG bytes, returned directly without a JSON envelope",
                    "value": "�PNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0005\u0000\u0000\u0000\u0002�\b\u0002\u0000\u0000\u0000L�B�\u0000\u0000\u0000\u0006bKGD\u0000�\u0000�\u0000�����\u0000\u0000 \u0000IDATx���u|S����JҤ^�H)\u0014����`�`�����a\u0003��1d���\r6`0d\f\u0019��N)\u0014Z��i���ﯟ��7IS����?�s�=�4i���{D�r-.\u0000\u0000\u0000\u0000\u0000���\u0001\u0000\u0000\u0000\u0000\u0000�\u0013\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\r���8�_�TX�]���m���\u0001\u0000\u0000\u0000\u0000�2�ʵxn�![�W�@\u0011�w_\u0007�����8w�\u0003\u0000\u0000\u0000\u0000�]\u001f�\u0013���+\b���M.�\u0004\u0000\u0000\u0000\u0000�>�`\u00030\u0000\u0000\u0000\u0000\u0000i\u0011�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,���\u0000���ںP�|66�&[�����ř٭�F�?���fZm���Д�\u00143�\u0005\u0000\u0000\u0000�\u000f\u000f\u00018�5iT{�c*�/�T��j\u000f���\u0007���y��\r6�Z`Nˤ$��GO�}��̹�fv\u000e\u0000\u0000\u0000\u0000\u001f\u0012�@g�reJ�ز��wE3�o�Q*m�{W�m˲reJ��H\u0000\u0000\u0000\u0000 W\u0010��W���U*�Ӟs��J٣k��\u001e\u0005\u0000\u0000\u0000\u0000�\u0002\u0002p�*]�xn\u000f!�R%���\u0010\u0000\u0000\u0000\u0000 \u0017\u0010�����Sn\u000f!=7W��\u001e\u0002\u0000\u0000\u0000\u0000�\u0002\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�s��\u0013<��\u0017ȗ/]aph�\u001b��\\\u0019���\u0016)�?�[� �0���\\\u0019�\u0007�^�)S*��q����\u000f���x\u0000\u0000\u0000�A\"\u0000#'�\u0019�o��^�\n�m�9c��\\\u0019��Ǝ\u001c0t`�t��7�:��\u0015�2�\u000f�w�r\u0007�X��0�mP��\u001f��x\u0000\u0000\u0000�Ab\n4\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�\u0000\f\u0000\u0000\u0000\u0000�\u0005\u00020\u0000\u0000\u0000\u0000@\u0016\b�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�s��;\u001bW-ظjAn�\u0002\u0000\u0000\u0000\u0000>4\u0004`�/\n\u0017roܠVQ��NN���\u0001o�/\\���?���*�-Y������Fcgem�MN���{�\u001f���w�ޣ�Ĥ�\u001d�!��]�\u0006���y�ss�S���BC�\"�=x|��,�K�r��zW��(�Q۽\r\fy�����\u001b\u0011�QR��+��RޣpA��:&&��\u0017g/^\u000b\u000f��x\u0000�\u001e��zW(�U������&,,\"($�������Z��݊��]�R���\u000b\u0016P�U�A!~oޞ:s%6..k�\u0002\u0000\u0000�\u000f\u0015\u0001\u0018��vM�\u0019SFׯ[���?s��z��{�V�����\u0013fve�R\u000e��i����+�3�,)I��\u000bk7�v��\r��-��wŉ�4m\\Wm�2�}�\u001fx��Wo\u000b\u000e\t3��o[�֩坶���\u0017�?\u001d���\u001e]�6�W����]������Cs�[\u001d\u0016\u0016����\u001dF\u000f�[�B�t�SRR��}r��k|_�6�{���qp�O?�ܶB�R�\r��cN���vӎ+�n�߭(\u001b\u001b�a\u0003�\r�߭d�b�\u0012\u0012��\u001c?3���>/�2y\u0017\u0000\u0000\u0000|�X\u0003��dkk�x��C�74�_#]�\u0015\u0004A�PT�Ra�E{[�?����jxW�xb׼Y\u0013��_A\u0010�J���4����5˾ѨՖ�\u0000\u0006\u001c�5k�}sd��v����_A\u0010<�\u0014�lH��g�\u001c7j��O���F����?\u0007\u0007{A\u0010\n\u0017r����5˾1L�� (�6�zu>�ϯ�Y��{��?-_�t�a�\u0015\u0004��ںK�V����u������֣���}������ү \bN�\u000e\u001d?j����;�.-Y�Ӝ�E�/[��_[��5�0�\n�`�Rv���쑝C\u0007v��\u0016\u0000\u0000\u0000�\t\u00020r��J�u��!\u0003�\u0019\u000f�� 4nX���\u001b�\u0017�0Ҧ~���v��,Z8Cc�ѵ�/����d�T\b�\u0002�����G��\n��dc\u0007{ͬicV/���6cw�(�~p��V�\u001a\u0018oV�`�]�W\u0016)\\�p!���k4��/�V���f�.N�v��;s�����\u0001�n���_[�5�kf���V.`�\u0006ќ��Je�h��>=:Yp\u000b\u0000\u0000\u0000�\u0007\u0001\u0018��_�N�Z71�q�\u0012���y���Z�\u0002���Y����`\u0018M\u001a�\u001e:��\u0005\u0017���``�z�\u000f����I�-k\u0016��\b ����\u001dk�\u0016�ʽ@�UKf�ݱ���Y\u000f`U*��g\u0018\u0019���Ӂ]\u001b�׭n�h�^��e�:���U�Ύ{~[���dNc�B1�\u0004sf\n\u0000\u0000\u0000@�\b��5鞻&%i�C�$�M*U�؂o&�V}9aD��n�UZ�68$���W�zu6c�&,]4���\u001c]A\u0010�����6Mƌ�g�]�\u0014.�.͆GD�'$J�oҨv��Ӗ���\u001b�\"�r�2�\u001a�\u0011����ڲfa��%�\u001cj:666˿�Y�jE�/Ѩ�.��I�aa\u0011F�JG\u0007��\u0003{Z6<\u0000\u0000\u0000�\u0001\u0001\u0018��ҕ���\u001e�Y�q���<�7��o��\u000fD[����0�\u0015t�߷gG�Ƨ�]n��\u0010���+�lW�l�RUZ�\u001b6���KÖ�˖tvr�̏Щ}�.\u001d[\u0019�?}�;`�\u0014�JM+�l�U�Y���n�{d�l����\n\u0016��\u001d#\"��,\\U�z�2U[y�k�Q�a>/^\u0019�d���\r[�,V�ii�V����ڛ�Y�z��\u0003�viҨ�h�ߛ�KWn\u001d0bJ�~c?�4g��c��?۩�?mX���`|��\u001e<z6b��b囖�ަh�F�>\u001e��鋢-?��yF;\u0007\u0000\u0000�|\u0010��QAO[��?��=z!%���t�$���:3�_�v�9�܅�)))� ����<{��.Cw�uİ�B�\u00186�G��.\u001d[\u0019.�={�Z��\u0013�߼��[A\u0010\"���9v�{�q�\u000f�\u0015\nEQ����)>\u001f�߰�ƭ�m;\u000f������dA\u0010�Z�3�:t\u001dv�̥t-5j����.#BB�;�\u0018�r�ϩ�<_�~�߰�:�N�9\u000bW�\u001a?���\u0017�}��yρ�\u0003�B\f[�-�eX�`��z�(ўWo��~�n\u000b������g/��}hؘ�-:\fx.\u0016�\u000b\u0017r\u001f9�����?��8׮�?�\u001f���Wr��þC&�:wYt�v*e��\u0007\u0000\u0000�|\u0010�������=^�\u0005�\u0006+\u000f��,�*�s{DB������\u001c�l���}Y'y����3\u0017\u001bƶ���/��\u0015MPݻ�K�k��\u0003��\u000e�4��5�\u000e\u001e{��7%%E��Ϟ�Bt6������\u0018�;:Z�\u0004�vMoÙ�\t�ICG\u0015\u0015\u001dcX�ٸ���=?�`�J�߭~�(�a�O��ޔxr~�⍕�~NW\u0018\u001d\u0013+z�����a��>]D��.[�m��+\f�%?x��C���8�\u001a���e�� DDF���M\\BB�r�V�d�\u0016��\n�£H!3;\u0007\u0000\u0000��\u0010�����bƆ�����IT�������[����mO��,JV�\u000b\nݤ�����4����u�Oh�ILL^�r�a��FS�Bٴ%�A!G��]�j۰1����U�Y��}��,uSߗ����N�� mZ42,<���~oފ�\u000f\u000f�ܹ�`����U1��q�����h��g���7�\"Z���s��w'-�ӻ��$���\u001e}�l��8CB�'L�ְ����}�fRW���?�#�W,� �A� \b��/��\u0000\u0000\u0000�}C\u0000�\u0016c\u0017\u0014J�0�\u0015a>�EQ6�r~0:A��n�\u001b�m�3���\u001537y�(/~Jm�\t\r�8s᪑\u0006��9)�\u0014�f��F��OH\u0014�u� h��?j^�l\t�*\u000b\u0016���W��a�\u000b���b���\u0005�;�\u001f���\u0015\u0004!08T��ꍻ��QQ\"\u0013\u0013\u001c\u001dҟoT�����Wk7�&5�wN��|��HLm!���ЅK7���cbE��Jekf�\u0000\u0000\u0000���9�\u0014iu���e�Ȏ�zE�+�\u001a����I�\u0004��9�Y\"Y\u0011�^\u0015g�\"]�������F����ȵ�ɷ�=4�fU\u0010��ظg>�\u0015˗NW^���fˢ\\]�kV�T�Z�Z5�ԯS]m'\u001e��m���3-++���*\u0019�����M���S�J�˘s��\u0006��S%����?0<<R�}t�Ȃp�\u0005�5��|���\u001c?kl�� \b�ᣧ�T*���q�Z&/|��݇Fj\u0013\u0012\u0012\u0004!�lj�-k�\u0001\u0000\u0000 �\u0000�����']�\u000fR�K�~�0L���\u0007��֏��k�\n�\u0019�����/<o���\u001e�\u0014?�\u0000�m���4\f���&V��*Q�n�j\r�T�]�[�h�t�:�9�\f99:���ݼ)1����)mE�RV,_ʜ;FJ\u001fb��$\u0012��C�\u001f\u000b\u000b�\u0010\u0015\u0013k�\u001d˖\u0016yf���U�\u0019��\u0012K�nn.j;��ӛ���t\u0011\u0012��\u0011\r��J��\u0006\u0000\u0000\u0000q�K1���K�؅ƶቲ��\\\u0013X,�\u000b��HTάP屷�ߍo@]�pnN\u0016��I�\u0011���(�6.��\u001bV��:���q�n\u001d\f3�IƟE\u001b�\"��S��w����bN����;B��&�LH6��̟Z�\u0005\u000f\n���i\u0005\u0007����ss\u0011�\"+�ظx���\u0007\u0013Əw\u0006\u0000\u0000\u0000�!\u0000g�=�C��S��(�TI�sN�����-\u0016?F��~vh��d��\u0011��\u0007��z㓴d��D��J��7i��q�ұբ9S��3+C\u001a�I��e�K�\u000e\u0010NK�V��,V�51�>.�\u0007_)�\"\u001f��٭�cp''G�T\u0000��3�Z��\u0005\u0000\u0000\u0000�M��ű?\"ƴ�\tz�l��V\u0011�B�8Ty<ko��\b��,4�~/\u001d�\u0019����S\u0013sP��Zmg���H����[7�\u001f3h�\u0005F�or����;�Vm��w쾃�\f\u001b��\u0016F)�Yǖј�\b���f,��n$�!�!�^�~�,Q���ͤ�vN�|\u000b\u0000\u0000���\u0013����N¨6/���Y���c=��\u0012��5��u��~��x/�/�����\u001d?\u0006o�\u0017��t�kV)\\��d\u001bGG�#y�͋�]����#E/�����\u0017�]�~���ԇ�ݻ�3liqԊ\u0014��-\b��I�\u0001\u0016��Y:kE��:.P@d�7�f�\"���z}h���h\u0000\u0000\u0000 �\u0010��Q���q\u001f���ܣMOg#��mO'Z\u0005\u0014���F��ɴᶧ���\u001b_�\u001b\u0017�[0���C\"��伲e�L�)SJd�����d�q#\u0007XY���������]�r��r�Rd��\u0014��S���#RRR���o\"�㚟\u001eHoל�<{�kXX�d1{���D誕E�vz\u001b\u0018����\u0000\u0000\u0000@F1\u0005:{%'�\u0017�z�Ä\u0000��عGq�O|4�&Z���.:E��zmړ~E=��0����$�\n�P�d�\"�\u000b\u001ai���P���a��{�S�.�߭Mˆ�\u001a����\u001e<Q4�\n�`�\u0011�il�l����'�|\r�EwNΣ�=\u0010I����m[��\r�k�İ��yc�?\u0003\u0000\u0000\u0000ل\u0000�\u0013\u000e�\u00146��oB��\f�d\u0015�\\�m�͍�v�d\u0015裙\u001fis�x��#Ƕ{���=�d�P(\u0006���H�N\u001dZ*Ŏ��~�n�ץJ\u00167|�z��ӧb\u000f-�)�YDt0�Gk��;\"'��j���%�:�\u001dԯk�z5\\]��\u000exO<}����a���}\r_��\u001a7��]��a��3��lp\u0000\u0000\u0000��\b�9�ꉘ�͟\u0004�2��V�Hx�^\u0015�<$\b�΍���\\3/���Y���~����q�ݖB�G��:���^3�a��>/^��\u000fJ��ha��Į�\u0007\u0005W,_�\\\u0019�g�*����t��)��.\u001d�\u0014/�!�^m�Z4oʒ�������c\u000f�����5\u000b�L�]���1d�\u0003�O\u0018\u0016��8q�`�K\\]��/�nX\u001e\u001a\u001aq�虬\u001c\u001c\u0000\u0000\u0000`\u001e\u0002p��{�4�ѣ��\u001a?�E�V��O�N�0��V\u001f����zy�\"��\u000f�\u0014n�8s�F��u�\u000f��T�Vo��G\u0011�\t�?��7��1b'�x\u0016-,��T�V/�����^�R�h%3�{�B�eɂ �T��V�w\u0016;$i�\u0017�\\�D�\u0002��\u001a7�5|P�\u0014�S|�\u0013\u001b���Պ\f��\t#��4��6����%�\u001fصA�#���~���L\u0000\u0000\u0000�\u0005\b�9*.F�e�\u0017��\n5�,���\u000b��$+�mru��W�5oU��V���,Z��������Z�����G\u0011�^�?>s��f��\u001a6����mׁ�%/|�\f�)\u0014�u?�-T�@��\u001a�*�۹�N����ptp��GHN֮Z�ݰ��w�#miѤ^�\u001e]\u000e���SF�\u001b5���K7n�y`�\u0018����-�w�VM\u001a7�ܱ�\u0013�\u000enլA��];�^���3Gv�/[Ұ�\u000b_�-?��\u0003\u0000\u0000\u0000d7v��i�\u0014��Yo�܊�z����d|��z壙W<�suJ�tUIV�/�+-�1�=d�ь\u001b5pܨ�&[�]�:������x����2��.���Ͽ�>{���h_�v�&\rk\u001bY���al;.�6l��o��eK{�+/]��\u001f�\f\u000e\t�y�J�V�.UL�\u00169\u0016K��N��$3\u0003�\u0001�\u0017�kլA�\u0012�\f�J�(���Q&{����?|J\\BB6�\u000e\u0000\u0000\u00000�'����?#G�~\u0016\u0015ll�%�\"�fQ�����16��k�~\u0018�w��C\u0019j�̥�?�2,_�z�h{G\u0007��}�̛5��\t#�6�c|��2%�gh0�$'k?\u001b7#���t\n�w�[��w�r��W\u0010���|��L����1p��do3%&&��b֣'>Y;*\u0000\u0000\u0000�|\u0004�\\��N�এ}�\u0019;�H'h_�m���\u001b�C���W�(>���3�-����f6>�Ɛ���z�g�;v\u001d<v��$'k���}hhD��\u0006�j\u0018.d͐����\u001d:)&6���ҕ[�oٙ�[�\u0018ߗ��~2���\fg��Ј�}ǰ�\u0015\u0000\u0000\u0000r\u0017\u000187��M\u001e���&v�\n�=�J���zŇ��7�V�2b�̕�~6y\u0006�\u001f��k�\u0017R�2%%e����d`��\u0001�����]G�M��\u001c\u001d�7�g�ȥ�=�u�A7n���7<\"j���\u000b����}s�+?�v�\f�n�\u0006�g2�}�t�N\u0003/_���\u0003\u0003\u0000\u0000\u0000L\"\u0000粤D�7C}7|\u0013,�MЍ��\u0013cs�hO��\u0007��vl9@���Y��]�!\u0007\u000e�HJJ�ɰ^��v�n�>�GO�&>!�H?�qq}\u0006O���Bߗ�'B��y���\u001f��v��\rA\u0010�\u001f\u00129�gؠ\u001e��\u001c����o�΃������kF��k��\u001f~�R�i�]{\u000fg��9,>!��囪�����5F�4���\u001d<|�]��\u0003FL�{\u001d��#\u0004\u0000\u0000\u0000D)T��Z���:\u0015V)�������H�T�����%�jK��MI��;�7�M���\"��\n����aB�{w\bp:nn.-\u001a�-^ܣ`��!���o�N�����m�:����T�t�Zޅ\u000b\u0016psu\u000e\u000e\t\u000f\u000e\t�r������i�F�8;ծ�]����{>g'�Ĥ��Ș�����}�����y�g��5�V*W�������&$4<4<��S�+�n\u001b~�\u0001\u0000\u0000\u0000�\"\u0002�{ģ�r��r\u0005<3���B�&w��v|�\u001a�<\u001d�\u0001\u0000\u0000\u0000 [1\u0005�=��'i`��7O'��ӛ)\u0003\u001a>xr[|�a\u0000\u0000\u0000\u0000@*\u0002��%.F7����k��Q,�Ȏ�Q�\u001eE\u0004\u001b�G\u001a\u0000\u0000\u0000\u0000�\u000e\u0001���Kѯ��fј\u0000�V��ѧX-��vᘗ�4O�#Bœpl�.1���\u0000\u0000\u0000\u0000�.S\u0007�\"���#����\u001f���8���qQ6��?}p5��@\u0001/�VM\u000f��������I¡��b��\u0002\u0000\u0000\u0000���\t�{-_!�\u0015{�\u0015-������b|��!\u0001\u0019X'\f\u0000\u0000\u0000\u0000\u0010�\u0002��\u000b}�<���C?�h�\u0014�$��m1���'�\u0002\u0000\u0000\u0000�\u0005x\u0002�7�*\u0015� $'1�\u0019\u0000\u0000\u0000\u0000,�\u001a༁�\u000b\u0000\u0000\u0000\u0000��\u0014h\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000ȂMn\u000f ϳ���٭����+y���\u001bw\u001eXֹ��M�n\u001d��$?�8q��k�@�:�I��7,\\�ݰ<8$���39?\u001ed+��E�4�-Z����Q�9<��\u0006����\r\u0000\u0000 \u0000IDAT�\"Z~��[w\u001f��`\u0000\u0000\u0000�.\u0002pf�t�2%��\u001b5P�A�۠z�{���Y���~�.�3I���s���\u001c��[�i��^�\u001b�5,�v�.\u0001��S�jť\u000b�\u0012��t�f.\u0006`�B!5���6\u0012�\u0001\u0000\u0000��\u0014�,���M�/_K�\u0016.�>q�`\u000b�uuq�:~�T�N��b����d\u000bz\u0006\u0000\u0000\u0000\u0000\u0019\"\u0000g���������z�\u0006���-S�+��N�2���Y�v�/^�v;�}\u0002\u0000\u0000\u0000�l\u0011��ƹ\u000b�w�=,U�T�,�;9C\u001dV(W�_�NR��A!�_��\u000e\u0001\u0000\u0000\u0000@�\b�Yf��e��\u0011R�M\u001b��Ю���}7w����Z_��>w��\u0001\u0000\u0000\u0000�<�\u0000�e��#g/Xa���ٓ4j�9]u�تA�\u001aR��N�;x�d��\u0007\u0000\u0000\u0000\u0000�F\u0000�J;w\u001f:u�Tm�\"\u0005ǎ�o�\u0013��j�W�jcb�&}����\u0003\u0000\u0000\u0000\u0000\u0019#\u0000g�\t_.�����\u001d7j`�\u0012��{\u00187j��G!��o�[�\u001f���\u0000\u0000\u0000\u0000�a\u0004�,��:`�ʭR�*����_\u0018�ܣ������jo�~���=�\u001a\u001f\u0000\u0000\u0000\u0000�\u0015\u00018�Z����O�j۵nҺE#��y3'h��D��Z���\u0016���d�\u0010\u0001\u0000\u0000\u0000@~\b�Y�dR]��D;�Ұ�n�j\u001d?j!uՏk�\u001b��\u0000\u0000\u0000\u0000\u0000�$\u000f�Af���<l`\u000f�Z��EG��n������yS\u0015\n��%>/^-[�%Cc(R�`�&u+W,S���������N����\t�\u000fz���ꍻg�_3�\\Y����G���Uaa\u0011�1��/��h��w\u0015��\u000f\bLN�\u001a�;:ػ��\u0018�GDD�\u001e\u0004���ؿW�\u0006�j\u0014/���\u0002\u0002��]�{�\u000f\u001e=3>�,T�\\���\u001aW��X�����&4,\"(8�����K��=u!119�(Z�`�&�*W,S��������SJJJDT�����/�\\�s�µ���\f������`oX\u001e\u0014\u0014\u0012�������u���Z4�_�BYw�|v*eDT��Wo�߸w�����������jܠV�\u0016\r�]�RچGF��\u000e�{���g�?��\u001b�^ _�f�kW�R�`�\u0002����'$FDD��|s��3�<y曙�-V�|�:��+�-��U���Ymg��SiSR�cb�b��\u0004\u0004��\u000b�y���k���#���\u001a��}�&�\u001a�-R�`�B\u0005���\u0001�AAA!'�\\:~�ɿP\u0000\u0000�\u000f�B�Z<�ǐ-N�UJ�m3��9<\u0000G\u0007���w\u0016),\u001e\u0017�\u0012\u0012\u001a4�����Y\r\u0019�m񼩢��z}׾cΞ�f�}�J����\r\u0019Эz�\nRq:u\f\u001f9�n�o��>4�gA\u0010\n\u0017r�{��h�į\u0016���^�����ꥳE�j5����a�Ёݿ�;Ű|�\u000f�~�q� \b�:�]��+\u0007{�a�s\u0017�O�j�\u000b_?�2b�/+�7�kX~���v]����N��3���_��T'aa\u0011KWm���n�V$ᛤR�v����?�V���q��\u0007\u000f�\\��7�g\n,�?mP����{�<� \bVVV}zt����b�ED{��t{\u000f\u001e�5oy`PH�r�B�i�6_N\u001cQ�Kr׷��oΞ����\u0007f�6Uu�\u0013>\u001fܦeC#ge\u000b�p����[v��w��W��Nm֯�V��A�\u001e&㴝J9|p���:�,Q̜�%'k����l�\u0016���B�\b�\u0015�^~񲍋�o\u0014\u0004���~ڤ����,u�ZR�v����[\u0013�6Ȝ�\u0001\u0000\u0000|��\u0002�]�cb����T���n���ߺ�8}5�3�ƿ�>df�m߶���{W-�Uû����n\f�:�=~𧍫\u0016\u0014*X����7=?��v�\\��+\bB��5�z}��]��]4w��\u001b��_A\u0010��\\��5�ġ�˔���-:whu���\u0015�g�L�� h��\u001e]۟8�}특�\u0005�e�^�<��\u001fܵ~�wӥү \bVVV�vjs��o5�WN-̗�e�O���8�H�\u0015\u0004�~�����!��\u001f�F�^2���[۷mj<�\n�P�R�U?�����5�+�\u000b�ԭ]�ҩ=������+\b����Gm�\u001c�k���D�D��u�\u0017����!���4�T������]����̽\u0000\u0000\u0000�4\u0002p6:|����'�j;�oٴQ�w_O������h�����W����N�~�?o�^j��\u0011]:�:�ϯ-���腹�B�R?,��Hοq��S�,��S��qɰ�=L~��N��\u000f��P�����k���\u0016m^��p!�\f\rL�Pt����~mҨv�.L�d\t�#��֩U՜�nn.{~]U�|iA\u0010\n���{Ϧ�M�s������\u0013\u0007��bNc�\"��n\u001eԯ����;�*�>�{c�\u001e\u001dͿ$�:�o�篫�f�OO\u0010\u0004�B1�_ם�V��T�ݽ{���o����\u0013�Z=oքEs'[Y�?\u0000\u0000 G�\u001b({M��$*:F�v�ɶ�6\u0015˗\u001e�W2\u0000̘���BAW\u0017��;�|ک���tss�m��^�:X�C\u000eS)U��g����}G���vvv�n^jf�K�/����g��r�\u001fk��fR��n�o[a�DqϢ�v��м\u0000\u0007{��5\u000b�\u0016)�wǚRf?\u0005}g�7�J�4�\u0016�p!�����T�t�z~G���q�\f#e�Q�r��˾Q�l3�I�\u00065g=ւ\u000b;�k�z�l�\u000f��\u00196�Ǐ�gXp;\u0000\u0000���\u0000���\u0006\u0006��n�Tm��^�\r�`�$���8si����B���y���jT��@\u0005������gvj�2��䌡\u0003��{�(E���=x4��^�b\u0019˞�6�W�6M���S)��C�g���ڬY>�]k\u0013�\u0013���_J-_7�L)����^��WF/�S)�M\u001aa������K�~nH�P,�7�q�Z\u0016� ���fêo-~x�֠�]\u000b����U�*���Yn��\u001f\u000f\u001f�ӂ\u000b\u0001\u0000\u0000�4v��v?���G��j��\u0016��>u�����\u0010��0��E&��;c��5�泲�Z�|��\u0017/3�=o\u000epvr4�����!!�93�ظ���|\u0003���Ԫ��Kxz\u00142�x@�O\u000e\u001f=c���9�3�q�;���\u001bV�k�����yfXX��/�BB\u000b��^��R)��\r{��ck�ڇ�}^����ukU\u0015�q��\u000em��8;EDF��~5uT��奮���w�?y��omm]�tq������k�~S�y�ظ8��2�_��F\u001ewG��>~�\u0013\u0018\u0014�M�:8ؗ-��Y��Tc\u001b\u001b���4��˟�\u0019OtL��[\u000f�##��\u001d�+�\u0013�A=��i�\u000f\u001f=�v+>\u0000\u0000�\u000f\u001e\u00018��t��_-���v�� �~\u0005AX��\u0006#\u0007̼S�Z�!��\u0019i��ϯ;�:w����\u0010�Ҷd�bm[6�׫S����N�\\�b^�\u000e�E\u000f%zoEE�<�Ji�,W������{M<9�\u0012��\u0011KWm��\u0003�\u0007�(\u0014�V�\u001a,_<]�i^��u�5\u001a�\fV�N�~�:\u001b�����~�c��K�\u0003�B�Tʒ%�}ԦI�\u001e\u001d�v?Ҩ��V�k�i������\u000f\b\\�tÞ}�������p!�ͫ盳6x�_G�[�!u\u0017n��j��/�\f\u0010�u����]��؉s�U�˖\u001c1H�D1A\u0010\u000e\u001c>1{��i�RjT��h��\u001aUE\u001e�\u0017.�>nԀ�?�39xs(\u0014��G�\u0013�JLL�5��\u001d{S_�w*�/�d��R�^��\u0015-\u000e�aa\u0011s\u0016�ڳĤw%666\u001d�6�7�\u000b���\u001a�z��!\u0013�Zh�\u001d\u0001\u0000\u0000�\"�@焇���Z�=C�ܹ�xݖ�&�-�f��\u0004H�N7g�f\u001f�[�y���O�C�^�\u0007�9wu������8}�T�\u0015ʕ\u001a��X�~���\u000f\u001c:��RUZ��8�i�>�k�[�|���࿏���[�|��y����L{��^�?v�|�O�KE\\�ʶL)���\u000bfO���)%%e��e-:�_�e�\u0007O�C��޼=}�ʴYK\u001a��q��\r�>�+��׫��?��<�y���\u0001;�8�6�\u0005�\r�;t��\u0013eg�b丙iϠ�OH�r���\u0011��reJ��O\u001c;���Z�j���GNK�9э�\u000f:u\u001fq�_�\u001b\r\u001d���V�\u0019R�Z%�Y��&���Ӯt�W\u0010�\u0007���\u001a4!44B�*�bE-\u001b�+?��\u001d\u0007������+\b�V�����f��\u001b�����\u000e.�N��\u0014\u0000\u0000 /\"\u0000琥+7?����)))��Zh����u��={&-�^?f✕�~\u0016�$�mP�!\u0013�\u0012� \b�F�72���\u0011\u0015\u001dӱ���\u000e\u001dO=�(\"2j�5\u001au��i��RRR����?@|���Wo6m�%u��<�f��zW.'Z���G���v�\u000e�\u0007���\u0003{\f\u0018w��Q�� �\u001f38��$�����|��4���������>r��ꍿ\u001a����-?��E$�����q���Ϟ�6w��\u0002��Ĥ�_�z#6���٩��Y��=4,b��e;w\u001d�}�Q��y���=үOTt�_���V\u0015*��5�� $&&�\u001d:��u�hmXXD��\u0013bb��\u001c�Tʎ�-�k\r\u0000\u0000 �!\u0000琄ĤI_/4�X�\r���y��f�\u0006v��ں}Ϯ���\\���<f�7R��P�\u0002\u001f�nfr\u0000�n��\u001d���7|���>z���GF\u001a\\�~G�J�Ěa�$��u[vJ��w\u0012\u0012�F~13(8T��ӣP��\r�\\n���w�?��}�䅑kX�E��Ɲ�RU�+�۷i&�Ŷ\u001f��t:�ޢ�c�n\u0012\t� t����i��|�v��'�m�a�W�f\r[�\u001c����Wo��h��\u000b��d;9�X�.j㶝\u000f\u001f?7��? pŚmR���T��\u0000\u0000\u0000y\u0014\u00018眻p}箃&���y�h�z���v��-\u001a�V�����~��\u001e�#���(\u0019T:�\u0017�����t���?��~��\u0005�\r�>����\u0013�4��^�L�(��\u0018s~%BC#���&U�)�\u000f��]�n�6���t�#�nޖ��&,,Rjj����aa����\u001b����\u001f1���o�S�\u001bԫ!5��bZ����\u0017{\u000f\u001c�v�\u001a�/� \b����*;c�z����?��g���{\u000eK}XPKb\u0016\t\u0000\u0000�\u0007�\u0000��f�_ark�ӿ3g�n�:ե�2����ȨhsƳ{�?Rs#\u001bׯ-�\u0018�=q���\\���d�\n\u000b�<��N,�4jPK�X�]\u001e6sF��{\u000e�'$�V5n��\u0013��<�|�+\bB��x��{ld��^����s\u0010ۘ�F�J��oܖ|���? Pt�����B��&/�r\u001a;�\u000e횭^:{���D\u001b(m3\u001c�}|�|^H~\u0018��? P�y~\t/OWW��\u0017\u0000\u0000 �\"\u0000����\u0019s�\u001ai���c�N�7�+�*��9/��U:q���n�\u0015�ʗ��ȑ-�[w\u001f�֭�\u0013\u0012���4�&1Q<�\n��R��\u001c�J�\u0005A8s᪙\u0003����%���p!�B\u0005\u000b�ُ \b�\u001e�\u0018�ML��5�{��\u001a�9:Z|\u0003-��[\u001c�5\u001eE�w06��BZo\u0003CD�˕\u0016�p+�y\u0015/ڭs���'\u001eٷ��Z���\u001d�\u0002�^0k�DZ��\u001a����C���\u0014\n�g\u0011c\u0007w\u0001\u0000\u0000|H��FG\u001f��\u001d�j�H��c\u0017-5��������n��@2�y�a�FuE�J\u0014/j�\u001c�\f��'ʾ/�rl\u0019\u0012\u001d\u001dcr9wbR�T�����۲e������\u001bz��\u0003�s���\u0017}\u001b\u0018lf?1F�yNJ�\f�\u0011\u0011&���\u001d�S\u0019y2١m��ޒ�\u0001��:��D\tO3ǐQ��6ޕ�׫U�^��ujz��g�$�tt�\f\u001fU����W���Hn���,2�\u001c\u0000\u0000��D\u0000�\u0005\t�O�bc�\u0017\u0007\u001a\u0012�2��� ��\u001bKl�$\bB�|���c\u000e�ؓO�\u0019\u0019yv3'��t��$���i��H<\u0015��3��\u0006K��濡:���o� \b����>.���pJ���U�I�&� ���?�忟R���\u0014\nE�:��t��c��\u000e��l���e�\t���&DFEIUq\u0012\u0012\u0000\u0000�\u000f\u0002p^e/�`R\u0010��dm��\u0016;�\"\"%�Y��d�T\u001b����N��XX��a�9��ԡ�i�f��I����x�\u0007b�\u0015.��j�~C�\u0013\u0012�ܱ�Pl\\�e\u0017\u001arv�dWdsh�vY�[��u��=Q�\u001cc�qe\\��\u001b���H.۶8�\u0003\u0000\u0000�9\u0004�*.A<f(\u0014�B�0?��N�}��'u� (mM�.�$6y������M����,�I�F�U�\u0016�\u001b�$��|�\u0010o��q��Y\u0016��6�Y�U:\u0019�pǸ)�M\u001d?��\u001d�>�����U��a�\u0005O�՚,H�����\u0001\u0000\u0000>0\u0004�*Vb+]\u001b\u001b\u001b{�Zj�]C�N�\u000f٤n!q_�YE���<�lt�n�#�ϳ��N��1�dc#�Y������ﻋ-����̞ߛQ\u001a��y\u0002�ِ^_N\u0018a��3���/޸p���K7\u0002�Bz��(\u001a����\u001aK�7;�;8�\u001c��Nd�Y��\u0003\u0000\u0000|\u0000\b�yUpH�T�G�����0�\u001f\u000f\u000fɭ�_��5<�,vU)Eο�Xb�\u0007\u0015����E\n\u0017�}���~�J���{�FY&J�4�}\u0007��9�➳�(Y�sִ�R�\t�I�\u000f\u001d?y���\u000b���=f%�8%�\u0001Xj;=Cn�;��yj\u001a\u0000\u0000�\u0007�\u0000�W=}.y\fO�j��\u000f�5�U\u0014-���>/$��5dcm�w��)+7�5��h�����TUͪ\u0015�\u000f��%�Д�\u0014\u001f_�\u0007ƾW��?\u0014x���Ͽ����\u0018���\u0010�I\r;�80{�ʰ0�e�vv�\u0004�2\u001e�˚}�S�����BB%_g\u0000\u0000�\u000f\f�\u0000�U��<��jݼ������Z��x^z��2<\"�vJF\u0016����_Q���g�Z&Q�$����\u0013�sw[�hhf'�\n\u0016�\\��h���>�O�~O��E��xT[�d�\u001c\u001eL:*�m���E���<?n�R�W\u0010\u0004�J<\u0000[�\tV��^f�YU�89<4T�E\u0006\u0000\u0000��\u0010��k7�J�\u001amߦ���&�߫����O]2,L�^v[�h\u0011���T��9�2Sr6�D��.]�%u�P���\n�w3��\u0001�?��\u0011CO��`��rϭ�\u000fD�\u001b֫nej{0\u0007{M�\"Y��KZ�ʕ�ډ}���\u0017Q\u0017)�.Zn��i�Bѵck�ͼ+��:\u0012���{�Z�\r\u0000\u0000��\u0010�����3���@���,�7�d\u000f�E\u000b�\u001b5P�v��q��R�4=M\u0005ક�\u0017�4\u001d�͗�Á�q\t\t�/]\u0017�R�l\u0017͝l���%<?\u001f�O�v߁�\u000f.���tC�ܽ@��m�\u001a�v��\u0001�.\u001exq��}[�7}����\u001b�-\\H<|fTa�\u0010+\bB��s�kU\u0017�\u0001K\u0010\u0004�Ғ]�>���Ƀ|?\u001b�K����{\u0016�\u0014\u0000\u0000 �b\rp\u001e��}\u001f�i\"Zծu���/^�Q�ZWW��\u00169:�o\f{���b�,NN�\u0006��\u0015t�oXU�\\��%�?�\u0011_��T�,�3Ij0xg��}-��\u0017��ܡսϟ,[�M����]��Y�Q��\t|�ҍ;�\u001fg� s؞�G�L�Bt���O��,5\u000fB���߻� \b�\u000e�5�W�Y�rjUxDT��=��:f\u000ek+��J�(���3�چ�kԨVI�ʲ\u0000�?������\f�(5��e��=�������3��ӧ���\u0016٬���\u001b���h�8\u0001\u0000\u0000�\u0007\u0004�<����O���-�%Z;u�pO�B�\u0016�\u0018\u001e\u001e���V�*+��,SJ�BA\u0010�/Y+U���O4\u0000[YY-�;��\t�{Si��7-�S��T�x���3�/_{\u0015/*Z;}�hO��s\u0017���L�6�^��?.�^Rb��^���d]\u0016�5���E\u001c��LǏZ\u0018V�.Y|Ӛ�CG~%z&��SF�\u0017�'��\u001bw2�~\u0005A\b��8j������\u0012�+�U�蚥s�.T*-<(�e���W/\u0018;yn���Q��5ز~��1�7�<�����V�po�NO\u0000\u0006\u0000\u0000y\u0017S��0�^?c�R#\rz��x���e���کu�:�[4�7d@�]��<��&#�w���g�]���v�TU��u��ie\r�����R�v�������\u001a�5��@\u0010RRR��]f���>]����Â��tlU�v��M�\u000f\u001d���_W\u001f�c�T�\u0015\u0004��݇._��\r��!KVl���޺y�#��6o\\7�z`W\u0017���N�|��lp�^���\u001fճ�/��\u0003ԯ[}ќɆ��;�kvp�z\u000f�e�v*����\f��G��\u001d�9~̠\n�Ji��\u001c\u001d\u001aԫ�f�7;�-3r���5?[v;\u0000\u0000�<�'�yۉ3�v�:ث��R\r\\�������O����7S�g����g��� \b�\u001a�<z`[pH�+?�RY�Tq�ĉ/\u0010u���=��~ک�T\u0003WW�}�\f����\u000e����6{I\u0016�.w��l�/{�\u000f�)Z[�\\�]��\f\n\u000e�s�qB|bѢ�ʕ)i�n�_G.^���Q\u0005��ݺ��FU�Mԇ\f�ְ~��~���祭�M��?n���&p\n�£H��\u00199~,-�\"\u0005gL\u001d=c�h3۟�x��?'-�\u0017\u0000\u0000@\u001eE\u0000��&O_�Uܣ^���*<<����Q�F�\\�z�ȼ�w\n�w\u0013ݵ�m`ptL����\u0010\u0004ao�<��]�j����^�&�ӏ\f-\\��E��R�\u0018\u000b��^ _�f�O�z�\u001f8s��g�\u0019�a��u+�JՖ+SbΌ/2�gq�\"�\u0007��Ȩ���\u0012^�\u0019�� \b�Q���c�g\u0000\u0000 7L���\u0012\u0012��\r�r��\u0006��\u000b\f\n���(�]�R�t��s�Y���ظ���}i�pT�\u0013���k���OZ�\u000f\b��k����Y2��\u0015\u0015\u001d�g�� S�+�����!!�Y5�=\u001d�z��\u0005\u0017���I��կ[��~\u0012\u0012\u0012�\u000f�bx^�Iq��GM{��MF/\u0004\u0000\u0000��\b�\u001f��Ȩ�\u0003ƮۼSj\u001bX��^�Ӧ��\u000f%��M���\u0017�_�)C���Ft������0\u0014\u001e\u001e٥��M?�!��Ԥ��o��<���\u0017Y;�\\��ū��\u000e{��ײ��޼��}���ϳpHz�~������3t�+?��]�����hm�f�ۀKy����>c2��WdTt�~㌬�7�g�\u0000\u0000 O#\u0000 ���3�.m�qPF\u001f\u0005GFEϜ��c��o��̿j���,MHL2��/6���ʵ�\u0019\u001a��%%i��ZҶ�KW2�`5\"2jڬ%��\u001e�608�Ɩ[^�zӪÀu�w\u001a�4n�N��}ϡV\u001d\u0007���N�\u0004��}��33��o$�\u0006����#�E?��\\�J��\u0019\u001aÝ��[t\u0018`f��r�v���2��\u0018�\u0010o�\u0000\u0000\u0000��\u0000�A�s��'�G�h������|(��ѳo\u0016��ޠ���;�v�5b����?���#�����t�3��\u001a8��/�\u0003\u00023�?\u0004A�y����?k�qЯ��\u000f\r51{�ރ���-�V�Ӧ���x.�{..!a�ܥu��z�&\u0013~tL�?\u000e��4x��9&_=��\u0007\u0004v�9jʌ��6OHL:|�L��\u0007��8��*����+�ħO\u000f\u001d�=�c\bx\u001bԵ�A#��q��T�\u0017�~�|ۡۈL�\u000b��!\u0000\u0003\u0000�<L�r-��c�\u0016��*�������=\u001f*++����W�T�\\����:;��t��ظׯ\u0003�<�x���O���\u0000\u0000 \u0000IDAT�,����S˦��T.�Y����cTTt`Pȝ�ON����=��EVVV�*��\\�\\�2%��wsr�OѦ�����\u0005<~�s��-�7os{�9J�P�+S�V�*%��zx\u0014V�TJ�mTTlTT�3\u001f���\u001eߺ� >!1��cmm]�b�zu��.����Q�\u0005���\u0007\u0004�����K�q9�\u0015Y��[4�_�b�|n��II\u0001o�߼y{�ʭ�w\u001fZ��ճ;�]���}=vʼ\u001d\u001cȺ�\u0002\u0000\u0000�(\u00020\u0000@�����[�R����,9G\n\u0000\u0000 W0\u0005\u001a\u0000 �j��_���\u0007ٰ�\u001a\u0000\u0000 �\u0010�\u0001\u0000��\u000f�����/��\u0013\u000e\u0000\u0000�#\u0000\u0003\u0000�}6�W�V�S��u�_�8\u0018\u0000\u0000�̳��\u0001\u0000\u0000�;eJyM\u001c7��'�RK���ܲ}w.\u000e\t\u0000\u0000 �\b�\u0000��\u00181�׷��[Y�o�PdTt�!�rrWm\u0000\u0000���\u0014h\u0000��<s)��\u0001o�z\u000e\u001c��ū�\u001a\u000f\u0000\u0000@V!\u0000\u0003\u0000���s�CGN����cg���w���\\\u001d\u0011\u0000\u0000@�`\n4\u0000 �\u0015�JIIY�v��{�r{,\u0000\u0000\u0000YF�r-��c�\u0016��*�������\u001a\t\u0000\u0000\u0000\u0000�}�\u0014h\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000 \u000b\u0004`\u0000\u0000\u0000\u0000�,\u0010�\u0001\u0000\u0000\u0000\u0000�`��\u0003@�*\\\\Y���h��\u0003QQa�,�c\u0019o���5�U����t�,�c庚\u0012��\f�\u0013\u0013uGwFd�� \u0013u[9�{(\r�#B�g\u000fF��x\u0000\u0000\u0000�y\u0004�\u000f\\Yo�I�\n�V=�\u001e��\u0000\\�����x�m�v\u001c:�]��\u001dẤ\f��,-?u�2�Ͱ<*LK\u0000�ź\f�W��ȇG�n�\u0013�\u0001\u0000\u0000�(�@�,����~/��*��\u001e\b\u0000\u0000\u0000\u0000X�'�0��ٺ��|�G�U*|\u001f'��p\u0000\u0000\u0000\u0000�B\u0004`H��R���<zN!�\u0002ֹ=\u0016\u0000\u0000\u0000\u0000�,\u00020�U��\u001e�]�\n5չ=\u0010\u0000\u0000\u0000\u0000�\u001a\u0004`�\u00186�`�\t�\u0015��\u001e\u0007\u0000\u0000\u0000\u0000d\u001d6���R�T�_\u0000\u0000\u0000\u0000\u001f\u0018�\u0000�|\u001e&l�\u0013$Z\u0015\u0012��Ã�&���\u000e~#r�Sb�.�\u0007\u0003\u0000\u0000\u0000�E\u0000���=K�mEpn�\"{];\u0015s�TLn�\u0002\u0000\u0000\u0000���)�\u0000\u0000\u0000\u0000\u0000Y \u0000\u0003\u0000\u0000\u0000\u0000d�)�Y����N#�QBL�.*LdmjZ\u0005=m��E��\n\u000f���\u0019[�j�R\u0014(l+Z\u0015쟜����Zc��.�.�m&\b�s~k{��;�W�\u0016�d��VQ�K��$.6%\"8��8��WЦa{�*�싖T:�Y������\u0002��^���OLd����#�gc�(2��\u0014}���:g{G+�|\"/KTxJL�~\u001c�\u0002���8z׳/^V��j����\b�\u0006\u0007h�\\�;8*,��AZ �;�VX�6!��~7܋�~2ԵlUu����\u0004]�oҝ�q���\n�7���T%U�f\u000e�*ٹ�۸\u0015�U�+�u��Z�g�\u000f��_=\u0019k�[ E�`U��C�Jv��)�\u0017�U�)\u001c]�\u0005A���'%��\u0002���h_<Lxp5���\u0004��d�XY)��TW��)Q^���9����u|�>>&%���w��MU\u0018�I�4�{��2\ne����-\"( \" �8@\u0005D�\"\"\u0002.DP\\��Ȓ�\f�Q脶���B�t�m��_\\�!�IKi\u0019�<ߏ/��Mrrs\u0013��s�3S�3��.D׫�Xu�����Q\u0006^~:��\u0002]\u0003nMe[U��8��R|c�ɺ��\u0007{a\u0000\u0000\u0000\u0000�u8�&N��\r�\"����?���v�s���j�Bs����4,����FfZ�nxr�,\u0001x�Ƿwn,Ws��S��n�S��� \u0019�qCV�)l��m\u000e��\u000eͼuM$���m�L7Q�N��Y�Z�����Z��ܒu���י�m�����2�Yc-�\bO���c;�~Y[ZW�~����ͳ�M���V��q��z��.Xg����OJ��Δi+\u0007���,#&\u0018�\u0005�\u0015�%\u0012i����\u001f�ι��n#;a�&��S���/���\u0014Y�����[�8ߜ���<�D\u001a��f���:����r\"&\u0018��{/��g\u0017�R��]_W�&5v��>�t��k>0�@�ݡz�E�-��:���\u0013��\fM���m:v����KB2M\r�أ�l�Ⱥ.R�'\u0011}��)`�����Mo\f�b��1P��\u0015�}��T=HmUێ�e\u0007�T��OJ�\u0001\u0000\u0000\u0000<�0\u0004�\u000b�\u001d�e��g��PEW*�/X�5�\u0012Q�\u0010�_����\u001b�nO<U��W?~�%�m\t�ßW�~����\u0019���$��ц\u000f�i�\u0019���\u0004��S�U�_\"�r9�#\r~�u�����_5�O���k��~��\r\f7\u00105�t<:�\u000b��������/\u0011i�)h��w��|�=ko�*\u0002m��Mvߟt\r\u001am���KD�.�7VYmKp�1@���EDcg��Lv��̢��KD:z�\u0011���D����Z[�@�~|\u0001�O����EM�%\"C\u0013��5�[�ܜ��\u001f��\u0000\u0000\u0000\u0000�K \u0000w�\u001b��Jٖ�\u0011hs�B��8�\u001f���^�:j��\u0016�\u0006��'��#uj�񑛵�b�F[��\u0005d��y��\u000f~�=�w\u0013.���\u0006�\u0005�l:�H�\u0016g�b��?����\u001b��ф����p�Ϛ6�b\u0000\u000e\u0018��c���&�a\u0013�6G���h'03�\f�\u001b�r\u001e=ոsW\u0004�\u001d�_\u001fq\u00194���?\f�6g���n�a�Uw\u001cO���kf�\u000f9\u0019���\u001d����\u001d&�a�����#�昳����]\u0001\u0000\u0000\u0000�;!\u0000w\u0001���հޤ��|?��XG���2��\u000e�c����,=w��\r��WX�X�>:Z\u0015.��d�]��J'���f�\f�\u0001��M~˼� ��h�2+\u0007�;�Y�o�;�_�\f\u001ci�z�#�i�.kG�������\u001c\u000e����\u0003\u001e\u0007�6�ß�-l����ks>��\u0018>ި�O��_���N�\u000e�Q�h\u000b9kw9\u0005����2��Z˾�{�#\u0005\u0000\u0000\u0000\u0000@\u001e\u0002p׈=�\u001e;���\f�V\u000e|;Wu=B�BT�c���D�\u001cU�X�������NKU\fMx�\u0017YtycX��b܉��D��Л�\u001fR'��+���]\u0011(�nIK�g�{/ᇿث\u0019S�.#3�Ov9��\u00121f�I�.��7�M��Ω�x��!\u001d�(V��O��Oڹ����G80\\��\u000eUz��>�h��\u0003\u0000\u0000\u0000\u0000\u0003\u0001�k\\9��Z���Y��Ξr�t�2��-T��\u0014s�}6�cH�&�N\u0013���.�����v�H�|A݄�.d�rϛ%�R�uQ��ڸ����)��c���C\u0019�>�\u0012ѩ\u00035�\u0015��ڜ�?��\u0015*g4�$��\u001a���I<U��n��#��O�U�*���Z��:�TJy\u0019�I��Q�D\u001f�M�ؤ~�z�XuAq�\u0004�\u0011�Yʃɫ)o�No.�k�H�\u0015a\u001e;�ħ���\tW��(I��\u0014{�6�T}I^;����љ�+\u0000\u0000\u0000\u0000�U�\fR�h\u0013K��[?�E�\u001f�����oU*o�\u001f�N�U�A:\u0002m��\u001a*6N\u0002'O��:mbi�?�\u001dn���g\u001beQ����=K⬫n��랱�i)�W�U n��[*\u000el��_�ȭ��;_���g\u001f=kh��3X?%��\u0013N��틲��\u0016�\u0016��:���U3\u00128`�A�\u000f\u0015\u000f�u��.k+�m10��.���w�{4�53\u0017o�\nL��������P��p'�ry�a������Ȝ%f\u000f�d|pKeZJ\u0013�MFf��W).�6�_XT��\"�QG�;v���\u001fY���r��XhU���q\u001d]�kU���f遟*��^%{:}#���^~ϒu�0�C���Z�L��\u0007T��B���vV��Jd�60B�7��*r�\r��7���\u0007\u0000\u0000\u0000��\f\u0001���\u001e�c\u000f��\f���\u0018�9��{����\u001e\u0003u/�5(l\u000f\u0018���/�e��\u0013{�O�f��t7�5\u0000W�\u0016����OAD�\"ɲ�y\u0017c\u0015_Tfj���n��ٳ\u000f{w�[O�\u0016�%\u0012��E��V؞�Ҵ���\u001fO�(,�,���P+��_l��^�l�\"kG��w��z��e�ף�-�N��>���Y��<��*i����:5���#��)�á)��?����hC'�O�M�ش���V��8M����W�\u001apg.e�\u0016n�\"`\r�cg���Xں�R�dR^��{�y}Mۡ-��O�s̅��}���{\u000bo]��K9%y���.-���W*����7Ge�\u001a��:ݚ/�8xh�^A\u0000\u0000\u0000\u0000��\u0000C��L���F���>�u�G�:{\u000bU����\u0017��#\u001a�b\u0001�'b��O�J��/�Y$�yM��;Z9<�1�DD��r��˨�\u0014����Fڹ<�2����\u000b�Α_��$�u�;��Ζ�-�\u0019CU�\u0018mY}[�5�¬�5�\u0017��\u0014����\u0005KW��߫vS~�t}E�=��U��ӯ̱��Ǚ�̭؛=v��\u0012e�_+TH�2\u0005�-�,Qy���\u0001�\n$\u0012骗�\u0015ү����\u0003�U\u000e\u0004�q|xg2\u0000\u0000\u0000\u0000(@\u000fp�i\u0016I�\"��.\n�9}C��\u001d��J��\u0005�����m��L~�P�ۗ-\u0015K$�أ�o�gF�m��,��e��oTuS�e��JmU�ί���p�N*%�r�zF\u000f��ϫo��X.���ܓ6�ǳO���->�����R\\Å�\u0006�q\n\\\u001e'�)�#�\u0014�\u001by�&����׆�Z]{j\u001b��/İ_�`�\u0015�65Ht�X��\u001e�Tg�\u001eBU���\u001d�;Z�\u0018���u��[寤45JrҚo]k�y���d��[�vA�]�/L(��z�\u0000\u0000\u0000\u0000�M\u0010��R��Z��=���\u0015\u0002p��\u0019>�t�:\\���\u0017��-dI\u000b�)M\n=o���3�\n�LA}���،��O�c��>��\u0013u��3��Jʋ[Y\u0003�Ckdyqkbd�\u0003µ��j%�أ���\u000b\"�����D�\u000b�S\u000e��j+�\u0017b�꣯��\u0000,\u0010�\\c\u0018\u0014�r���?ؗ\"��H�'�V;{ig����7�J\u0015\u0015�S\"K�ē�\u001c���\u0016U7=��\u0004\u0000\u0000\u0000\u0000�!\u0000w��\u0013��-R��f\u0014\u0016C�iq�\u0004��\n��)\"�ksz\u000eҕ\u001f��r��ǽ������\u0016��.oc\r���_��s�/�?\u0017�([E\u0000f�l�!�ZI[����K��������TMU�5���&3\\����\u0018\u0006=e`b��-��\u001cL��*+�]T�-�엵*��ߗk��5\u0015*g�wb�a\u0000\u0000\u0000\u0000�*\b�]����R|��\u001a�6N\u0002G\u000fmYi\"/?\u001d�\u00029��Zb��N]`���/D��\u0000��\u0003�DL\u0000�H���\u0016��ׇ\u0016��sU��ɰ�=&\"-���\u001dn^�P�&'/�E�j*�ڽ{Y1��\u0002K{��>�~W����z�\u0015����_��\u0000�vG\u0002K�%�Zh��XM��Z�-��\u001b�,��Ҭ���l\u0003\u0000\u0000\u0000�Á\u0000��b��(\u0007`\"\u001a4LO\u0016�\u0007�M\u0000N��O��W\u000e��B�����#d�\u0005u모(������״\u001f�ZT\f?�=�lY[��F>4��\u001dz�U��\"��k�g.U�l/��Uy�m]\u0004\u001d��an��\u0013���_�w����6�w\u001fo�T²��\t�+*+zx��\u001b���\u001d8-n%�D�z\u0000��� \u0000\u0000\u0000\u0000@�B\u0000�b�G�\u0016�c��+�\u0018\u0012�\n�)�\r�\u0012\u001bEM\u0012�S\u0004��td�m�#��?�>\tݿD�X�~nlwbjw�H�U^��!��ݡ�NC\u0013��MUu�v��)K�*���=c��\fc���\u001f,��6�[��v���*\r\u001d{��\u0016�C\u001b\u0012\u000f\u0000\u0000\u0000\u0000\u001d�r,]��L��6sR�\u0018�P��c�b*��I/�5�4K�&(ޗ���\u001dp�\u0013Xa.�L̑��\u0000,~ԕ�ZD�[5��<\u001cuU\u001d\n��l�����.�#\u001b\u0018�\u0016��=����\u0006�\u0007I�D$U�e�iqX�e�ýn���ߏ�L\u0006\u0000\u0000\u0000\u0000e\b�]/�m9\"f1$\"�\u001d��\\\u0005��\u0015Q]u\u001b\u0011��a�.�7X���x��Y\u0012E�����vf$>&��G�\u001b;B}\th��Q��\u000evA�\u0005��\u0001\u0017��m:�\t6�v}f��V�\u0016�i��$��W5�Z��Y*%��C/|���ŭ���\u0007\u0000\u0000\u0000��B\u0000�z����c���~*�?3$G�\u0004`�\u0010=\"\u001a\u0018���bI\u001dOD��'�#���\u000e�.�׶?��s\u0004J\u0001��Lk��.��팬nj�$E����t�𬱮��&�\u001a\u0017 Qj��M�jg�\u001e\u0006\u001b\u0003\u0000\u0000\u0000@�0\u0007��\u0015f�d��\\|\u0014�k�\u0013��\u0016V�p7\u0000g^\u0013U��\u0019[�3���W�o�UU�9�\t\u0019���x佻�b\n,ud�F�\u0001�����坏�iɊc������N��ɭk��?k.�6޸��v�@\u0000.�=����ڪ6�q��֔\u0006\u0000\u0000\u0000\u0000 \u0004�n\u0012s�N9\u0000�8\tz\u000e���U���,��xgYQ��Rb�N0�߁���\r��\u001f�R\u0001����ƥ�\u0017t�**�\n<T�V�RVY�r�p���\u000b]v�8yjG<g�zS�m�s\n��X�60�;�\u0019�C������֙e�����1��G������[��.�`!+\u0000\u0000\u0000\u0000�?�!��\"N�(�9���\u000bD_Kl��w�\u001a\u0015^x�\\�[�\u0011s��a�X>��xA�V�k�*�P�\\�݃U�V\u00101��u�\u001fI���\u0017�Ԥ_\"\u0012h�\u000bI�^e������گ���_���.�r}�^��|��\u001b��FN1���y�S�\u0001\u0000\u0000\u0000�\u0011B\u000fp�ȸ\"*�k�vT\u001c���_Wy�{����\u0003�{G�\t�m*:Ҵ�\u0013\u001e\u0003�\u001d./����,�h\u000bY޵�����ը���\r��I�n�*\u0011�\u001a�\u001e>��k�yY]?������Y�Wv�.4��b̺�3��O�K�D4p�\t\b��|K{����D\"��+?�\tXL\u001b\u0000\u0000\u0000\u0000\u001e\u0004�LwQ�\t��½����5�V�~�W���%v��gU�\u0005lQ\n\u001e��\u000e-���)����zӐ�&�,���\u001f�G����z~y�魵�c���\u0018��o�r\u000eXڱ�'����V\u001f�%�dX�qR�ʈ;t�������\u0002m��I�Ṵ@��\u000b\u0000\u0000\u0000�\t�\u0003�]b��N�c��n�5m7�Ʃ&G�;���{߸�k%m�2\u0000�ME\u0000�\u0016b\b�\u0013����\u0003���O��㾺�j��\"Uw����[HD�6|s\u001b���$E�/��+�3WŅ\u0011\u0007�v\u0006Z�8�\\�M���rZ�/6y���f\u001d=�˧�*���\u0002\u000b3+�o���>\u0016��&�afj�rU\"�f����\u000f�=\u0000\u0000\u0000\u0000�\u0010��˵Ħ��6#�v:�.�5*�ؔ��gg�\u001f�c��,8�%ZE�\u0001�/�xk�/;�-�vd�\\xTb��կ��vێ�iR�ټ�\n囄:���ۨ|L��\r��b;W����G�7P��9�Q�D4w�u���c�I�\"��R��[;֛�����n^Qe�b��M^Z�\u001e��R:��JU3\u001e�QS���\u000e\n���E\u0000\u0006\u0000\u0000\u0000�\u0012\u0018��]$m��\u000et+�İ\f�\u0014נ�\u000fV����R\u001c{�xpU�*G��;���\\��S�_��j�i�\u0015[컩\r�%�E��\u001b�T�:g���_�\u0015����𫿜�˕3*JZO�U�<�{��6\u0015�C+�s���P��Z+��??W�\u0010\t}#�o��{k��\u0011\b\u001ca�{�ǻ\u001bl\"�5�\u001d��/Lo�\u001bf?F���-k�.\"���.���Z\u0000\u0000\u0000\u0000��\u0004=��(�h�S�L��s���U}����&5�cDt�x]kKw\u0015�./V\u0019��m�s�X�mxx�0A����b�T\u0013\u0007\u0015e���\u001b��7�N\u0013\u0015f��xd�m�&P���w�K�\u001a\u0015���\u001eWy��Y�7G���[}!�����̚�\u0017�\u0017��a�\u0015ŭ\u001d�\u001b�&��_X�՟N�\u0002��!w�\fӱ3�\u001fCAD-��_���Ȟ\u0000\u0000\u0000\u0000�\u0000\u0001�\u001b%G�7�Kt�Uv��\u0017���:;�^}\u0000�9�]㟉�z2{�$e�v��\u000e�㠵E��ۅ_���\u0017�̜.>B啫�E�Us�\u0010˸�ē��Y-�������\u00193�d��v.\u0006)P.�.s)�a��e3�X��\u0003����l�K+\u0001\u0000\u0000\u0000��\u0019\f��F����S�b*k�/#%Z]\u0004mj��W]\u000e��ݼ,���P�a#3��X\u0005���\t���\u0017=`ɴ��M��a/���\"�~���-I}�\u0012� \u0002��:jz������\u0007������\u0003?V>��\u0000\u0000\u0000\u0000�\u0013\u0004\u0001�{ũ��M�Q\u0019��'74֫,.�\u0014Y/j���Smb�o;\u0014\f�\\��\r:��\u0000'�T�z������͹�u�'�)x\u0016�O�o����cJ����7GfՔ�,5,���\t�Ss�/\u0017\u0014m[W&�t2�\u001f�R�n~Q�B;\u0000\u0000\u0000\u0000<�\u0010��W�ɺ�f�?���\u0000�[�r��[c�t��-{�/��س�_|\u0015\u001e\u001f�Gjg�e�9�X5�I~\\y{�����v��ue�,+�������\u0015��~^s[�Jq���i���\u001b5-���OK\u0017=���qc�K\u000bZߛ����b�_\u0000\u0000\u0000\u0000M�\u0000ܽ\u001a�$\u0017b��F^Fsy��\u0015K��(EEPim�&���\t�\fq+}�J��EE�e,�s\f����m����`ix\u001c\u0014f�,|6�q9�\u0007k�]��8�eۺ��\u0003n�����\u001d�\u0007�x=\"+�`��2�\u0005���-/�\u0011p+��;�q�a�\u0000\u001c����u;�W.�4�\n�\\�z��s\r�6������.|��ֹ���\t\u0002\u0000\u0000\u0000��\u0010G���Q��[DU����\u0010��GՒ'�\u0016�|\u0003��B�,m�F�Z�͒�\u0006IQNkf��JB\u0003��Ux\"\b�9��u<�\b휵M,yB]^�X�P+��j�L\u0015ݼԔu���}��\u0016�>\u0001z>\u0003uL͵\fLy����RqI~���\u0006U��\u001e���V/]\u0017om#3�����1��NR_�VQ�z�(�b���9\u0000\u0000\u0000\u0000�\t\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@#`\b4\u0000\u0000\u0000\u0000\u0000\u0000h\u0004\u0004`\u0000\u0000\u0000\u0000\u0000\u0000�\b\b�\u0000\u0000\u0000\u0000\u0000\u0000�\u0011\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@# \u0000\u0003\u0000\u0000\u0000\u0000\u0000�F@\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0000��\u0000\f\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u0001\u0001\u0018\u0000\u0000\u0000\u0000\u0000\u00004\u0002\u00020\u0000\u0000\u0000\u0000\u0000\u0000h\u0004\u0004`\u0000\u0000\u0000\u0000\u0000\u0000�\b\b�\u0000\u0000\u0000\u0000\u0000\u0000�\u0011\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@# \u0000\u0003\u0000\u0000\u0000\u0000\u0000�F@\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0000��\u0000\f\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u0001\u0001\u0018\u0000\u0000\u0000\u0000\u0000\u00004\u0002\u00020\u0000\u0000\u0000\u0000\u0000\u0000h\u0004\u0004`\u0000\u0000\u0000\u0000\u0000\u0000�\b\b�\u0000\u0000\u0000\u0000\u0000\u0000�\u0011\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@# \u0000\u0003\u0000\u0000\u0000\u0000\u0000�F@\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0000��\u0000\f\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u0001\u0001\u0018\u0000\u0000\u0000\u0000\u0000\u00004\u0002\u00020\u0000\u0000\u0000\u0000\u0000\u0000h\u0004\u0004`\u0000\u0000\u0000\u0000\u0000\u0000�\b\b�\u0000\u0000\u0000\u0000\u0000\u0000�\u0011\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@# \u0000\u0003\u0000\u0000\u0000\u0000\u0000�F@\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0000��\u0000\f\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u0001\u0001\u0018\u0000\u0000\u0000\u0000\u0000\u00004\u0002\u00020\u0000\u0000\u0000\u0000\u0000\u0000h\u0004\u0004`\u0000\u0000\u0000\u0000\u0000\u0000�\b\b�\u0000\u0000\u0000\u0000\u0000\u0000�\u0011\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@# \u0000\u0003\u0000\u0000\u0000\u0000\u0000�F@\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0000��\u0000\f\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u0001\u0001\u0018\u0000\u0000\u0000\u0000\u0000\u00004\u0002\u00020\u0000\u0000\u0000\u0000\u0000\u0000h\u0004\u0004`\u0000\u0000\u0000\u0000\u0000\u0000�\b\b�\u0000\u0000\u0000\u0000\u0000\u0000�\u0011\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@# \u0000\u0003\u0000\u0000\u0000\u0000\u0000�F@\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0000��\u0000\f\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u0001\u0001\u0018\u0000\u0000\u0000\u0000\u0000\u00004\u0002\u00020\u0000\u0000\u0000\u0000\u0000\u0000h\u0004\u0004`\u0000\u0000\u0000\u0000\u0000\u0000�\b\b�\u0000\u0000\u0000\u0000\u0000\u0000�\u0011\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@# \u0000\u0003\u0000\u0000\u0000\u0000\u0000�F@\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0000����\u001b��fP�\u0000���Qmo�s2\u0000\u0000 \u0000IDAT\u0015�E\"QyY��Ҷ�6�;���651.++�y�V�7\u0013\u001e������YeeU��\u001b��-������ۃ��6I[cCcMumAA��s��yz�YXZTWW�^K8�x�L�L}|<��7777446�7\u0014\u0017����\u0015nu�p�������z��Ci�c���������SOO���:%�R�մG�(��\\n��ADt�FFyYţn\u000e\u0000\u0000\u0000t\u0019\u0004�.����\f�\fT�ZWS\u001b\u0013s��\u0007jk�\u0014n�8�\u0001\u0003��bϭ��nn#t��\u0013�\u001e<xPRB��'0\u0000{{�/yo��}��D�1g߶��������3��/]���O���:�˻�#��ܜp.y��{Jo��6�\u0018\u00151r�д�7�-��ۛ��[���а��VVT=�\u0001X��c��/?�&��l���]ph���\u001f]�\u0000\u0000\u0000�� \u0000w\u000bq�X��,����\u001e󇁑ᘱ#CB\u0007����73\u001fQ�\u0000�(,,njl���\u0017������tut�#FFxy�/]���I��Z��ij\u0012�w�\u000b����ZD���\u001d6$�O�^�-YUTX��\u001a����˛I����)�/�x�ԫO^����\u0011�ϙ��v�Q7\u0004\u0000\u0000\u0000:\u000f\u0001�[��%|��w�[tt�ή�O�\u0019\u001e\u001a6���`�GK�.����D�ñ#Ǔ\u0012RJJJ\u001fzc�3��\u001dy)�JiiY��>�6m��:�����������:9;N�4n��{��\u0019'O�I��^QQ٭��%>^����{�i�\b��\u0016f\u0013�\u001f7$\"����ͷf/o5sS��̌��G��ǋ��\u001b\u0011��m�\u0016�T\u001e��\u0018\u0012��}��g\"��Ȓm��rc�w\u0000\u0000\u0000��\u000b�/H��Di��i���S�ߘ�������f|��s�\u000e\u0017R.?�����t�ʣnB7*.*�l�M?|iaa6|Đ�\u000e�W�\\rg�6�D���\u001b����Ȱ_�>�|{���\u0014\u0016\u0016\u0013���t����ttu������H�D$�H��\u001b��[\u0001\u0000\u0000\u0000]\u000f\u0001�a���I//���\u0007���ro��\u0015��5�0����r��e充�R�T�κ�:vv6F�F\r\r�9Y�M\"���\u001c\u000e������\\*�\u0014���\u0014�~��t���������^CCcvV�Hų3x<�w\u000fOI�$+3�Yn�8+�A�q8��\u0005\u0005Ej\u000e�|3�\u001c�����!�H;Ҍ����������*))-.*Q�Zmmmg\u0017G\u0003\u0003��Ʀ��\u001c5M��\u0011��X���46�\n�\n��껪��45�.^�<bd������n}C��\u000e\u0002�����N�r�o���������\u0016�vIiAAQ7=�\u0003�J�����׿\u000f\u0011�{�\u0016vl\u0014������\r����+���\u000ep+kK[\u001b+.�WZZ^�_���s���\r��\\��*��\n���<ckK��\u001dl����L�BacccAAQMu\u0017�<\u0017��.n�\u0006\u0006���M��}j8\u001c����PG;;3G�l� S3S[;k��vYYE^^�T\"Q�������������&';�\u0015�\u0003\u0000\u0000\u0000\u0004�G���\u0007Ç�\u0012��@Y\u0000^��\u0012�\"X#G\u000f�0�\u0019+kKٖ�����σG%���211~i���\u0000�@�liii9u\"���v�'\u0013\u000e�3r�Љ��YX��6\u0016\u0015\u0016�ڱ/6�N�\u0017>_k���\u001b\u0018\u001a\u001c:p�_w)4������[c\u0013�=�\u000f�ڱ��hdl8���a���gom\u0015�D�o�m��\u000fYO/�u_�����;g��k?pqq$��ں�+>ͼ���p\r\u001b\u0011>��q�6V�\u001d�ꚣ��=���¯FC#��3^\u0018ro3b�����Zn\u0018���ۗ\u001b�����y�ݏ׼���DDuu�)�/\u000e�\b\u0011��f�4W�����C�5���e�9\r\r�K��s�\b���򻅄\u0006Nx~<��\u0018���[ޑ�|I���^�\u001c\u001e\u0011rOS��nۺ���\u0011�\u0016\u0016f�^�\u001c\u001c:XK��l�J$W�\\�m�.5\u0007�KH%wb\u0012�Ǔ�n`h0uڤ�a�����\u0016q�8>.a�/;����-#G\r���l�D�ʌ�*+�\u0014\u001e9|h肅sĭ�Y3����-\\�&k\u0011�\u0001\u0003���x�Y�`�.)ݹc_��8柮�N\u001b6}FD��[}M�\u000fY[[{瞟�|�Ą�OV)��o�}y���)ɗ��_t���;}�Lo'\u0011�}{�B\u0011���6lD��?\u000e�9\u001d��[�{��`�K�ҫ�S��W��{��X��\n\"Z�j���\u000b\n�::�o�a\u001d\u0011��`���\u0003w��\u0003�L���h/ۭ��r���\u001f;)\u001f�\u0016,�\u0013>4����\u0015�Qx�w��\u000b\r\r��ryՇ�1[�cx��Ѵ��EK�1���+�?�;�[\u001es\u0010��m�l�:����9v���%\"�@��ı��\u001afbb,�����l�.�z�r�Z\u000f\u000fW�\u001b�u\u001f�����40П���a��ϗD\"��ryۯ��䂺���ν�\u0010Ѭ��|kޫ�\u0007�%�����}{!��?'�\bV̹а��.y[�.0����\u000bdW\u000f}zx�|�Eo�R��U����u��q��\r�\u0007��2m����lKS�(�d���{\u001b\u000f\u0000\u0000\u0000�\u0001�\u0000?\u0002%ŷ����}z���\u0017'�}k���eAAQbBJRBrEy����YS^�3K~O'g�\r�>�\u0018\u0016���JO�\u0019\u001f����'\u0010\b�zz��k���NZ�p�\u000b��=��W,,�k�k�\u0012���_�oh���Y�t�˯Ngvkm\u0015GG�\u0013Qh�`\u000eW�\f������X*����a�XY[�[�z��\b�@���.>�zj:��\u001d:<l����I[�ͷ_�ED-\u0001��@��I�ǿ=�5k\u001b����Ą�Ą���\ncc�i/M���l�=-�,�}�f�\\3R���x܈�a�Zmie�Ҍ7_a�/\u0011��Z�v�\u0017����x����;�G�\u0010ѹ��\u001bT�\u000e͚=m��y..�u5�\t��\u001c^\u0007\u0007�\u0015+\u0017��\u0006�v��4_�~��QC\u0005\u0002A^^A���W�x<nİ�/7����a`���UC\"BH*�r95>.!�j�D*�����?���]NWW�?p\u0000\u0011������7l����/W�\u001e3\\[[;?� ���kW�s�����/7����fv��=�����r�\u000b�ʄG\u0004\u0013Q���j\u0006�>���\u001f�\\������t���s�I�e\u0015V֖\u000b\u0017�9��>YY�e��D���+ߞ���Ӿgo\u001f����A��(1!�3\u0007E-\u0007\u0007;揊�v�rm����rU/�\u001eUU��i7���9\u001c\u000e���骹c��4�L@hx��C��\u0010Qnn�,�Θ5e�{�\u001d\u001c�\u001b\u001a\u001aS�/%%$WWט���������q�>������Eo�\u0012f�m���5u%%���\rD$\u0016����������\u0012�\u0016_k՚��L�hbb\\XX�����|�vI)\u0011y�x��l���\r� �'���_��\u0006��5��m���\u0019y2��baa��OG=5��*8{6)-5��\u0006\f��b����*�\u0017�N`�/\u0011ikk��\u0015*� \u00125���2\u0017\u0013[Z[�W�&���UXx���Vx�x677�����'\u0016\u0015\u0016\u001b�\u0018����w\u0016���pd�\u0013\u00108`���\u001e\u001e���U�.$�=��_��#|��Q�ּ���\b\u0000\u0000\u0000t\u0004z�\u001f���r[;\u001b\u001b�����@���h��݇\u000e\u001ca�\u0010��x��}y�Ȉ��\"\u000e\u001e8��R��x\u000b\u0016�111���\\�z�����ao����}�����;LD\u0013'=\u0013\u001a\u001aHD\u0007�\u001f޹c��ULD:B�ksfE\f\u000b\u001d7�����ӧb�(�T��ό237������T��\r�\b!���ҙ�\u000f\u001e��d�|+k��ꚍ뿿x���X'g�\u000f>\\dem�x鼥�V����\u001b\u001a\u0004\u0004\u000e8u2���u�t��-U\r���ՙ4y<\u0011�ܾwߞ?e\u0007�W_z��\u0011C��\u001d�w�����r�����ڲ���\r?ʺ[��\u001c��mƒw?��\u0019�z�A�\"OF\u001f=���������Ҥ�\u0017\u0006\u000f\u001e\u0014\u001e\u0011�ϱ��-Q���l�@��ώ!��>�˖�---Dd`h�����}<�5�B�円�;M������z�\u000f��::�/_����r\u0011�T���ƌ\u001diaaVYQ�d�J&�\u0011������>426�4�/>٨�=���p<<\\_}c���\u0011\u0011��������.Y6��Φ�����JJL�5i���ll�\u0017/���\u000f$\u0012ICCc���a��a\u0011!\u001e:&��f�f��=�(�ʃ���wƬ)\u001c\u000e'>.��~e\u00128�˝4y���&=���\u001972��\u0012�()1e�ؑ~�|�o�C�?��t��\\22�T\\wrv��0�J$I\t)]q�����3f�H\"jiiIko�opH`Mu��k�'�K&\"\u001e�7y�s��<gbb<tD�_�\u001e.yR��Ld̔�\u0013\u0003\u0002�����w\u0018r��!C�����S4lH�s\u0013�!��ӱ?~�+\u0013޴�ZS^�8��qAA��S�{��|�C\u0002��D�6n�y㖋���Q�;~߳��=/�8a�ԉ��K缶PvӘ�G���-�H6�����FD\u001c\u000eg谰��&\u0010\bF�\u001e���;�(6��˯N\u0017���!\u0001\n����\u0010\u000e�SYQy��U�8����\u0016��\r\r���$�|98�-�`�����e�ޞ�Da���\u0011�)ɗ��u��ROo���b\u0001�/�CRbJRb�[�^\u001d>2�fZ�r��n\u0017\u0017Ƿ����\\��qÏ\u0015�\u0015̫\u00181*⍹/�\r\t��Ȓ}��Ϝ��r���}��G���\u0000���\u0019���3<��\u0007\u0005�O8{�~�\b\u0000\u0000\u0000�/���hTW�\u0010�����K����L\u0017���e�M,n�����W��F\f\u000e\n����LD�>�tK�`i����D4t�\u0010\"�\u0011\n�O\u0018KD�1�m�ͤ_\"j\u0012���z3� �S'�x<\"������!��{;�tt��\u0001���ԩ(fK@�@w\u000fW\"������KD�9y��}KD^�\u001e��H\u0019\u000e�s���M\u001b7ge�^M;�:R���2�lO\u001c?#\u0010�m�}� \u0018�iF�\u0000fH�\u0017�}-?�877��/6I�RO/�\u0001\u0003�\u0014��z-���?fe�^Kg�m�(\"��r�\u001fqMwd��U\\�r��\u0000y�_�@Di��?�����\\Ǻں�뾕J$zz��A�D4(����\u001b\u0011�������\u0015�g���6pP?f���\u000b\u0011]�pU�~�(?�����YY�M���(�����o\\+��w������\rk<�܉(�L��#�e�\u000f\u001c��\\\bX��[Y�e����o�R���K@�\u0000f㩓QD����(7���\u0004q���j�a��N���ro�g|��&Y��D\"ٳ��ٳID4e�\u0004�c-1!�y\u0016������%\"�q\u0016\u0003\u0007�\u0011�͛�����������R�����_?�gƏ��ͧL\u000f���vd\u0006馯73闈���v��_\\TBD�r#cYE���J$\u0002�  h��v_ߞf�fmmmQQ�D��p�L�HD�i77n�Q6\u000fB�*޾폨ӱD4�1�\u0015�:���l��۩�Qyy\u0005�Q��_>\u001d��\u00049{6I�~��M}2�Fz\u0006\u0011Y��\u0019PP_ߐx.��\u0004)���r:2��\u0015�\u001f���݅��ݸY�\u0004��/\\�����f}}��&<�В�O֬�y��͛�G\u000f�{_���\u0017'��Z%ŷW�ZǤ_�U\u001c�'�ؑ�D4���L�\u0016\n����D\u0014y*F�~����S�������\u0014\u0000\u0000\u0000@�A\u000f�!\u00125\u0013\u0011��\u0015\b\u0004�ŢdsP_�=}���d]=��M�](D4hP\"���S�7�ϟ�\u0013S��J��go\u001fft�\u0007�*�&�H\u000e�?ܳ�������\u000b3�.�T���s��A���/�\u0005\u0006�kkk75���%1[�B�����H����n���;99\u0004\f\u001e�\u0010u��\u0013�=DDT{7��ze�O?l��=\u0016�D\n\u0007apH\u0000\u0011\u0015\u0015\u00163I^��\u001b�rs�]\u001c\u0003\u0002\u0007(L�<�Ԍ�\u0017�TVV����\r\tڳ� ��\u001f٧�UU�155a\u0012���'\u0014�)�]�՗����ee�\u0012QPp\u0000\u0011\u0015\u0017�(�=�y�Vvv���S@����d\"���%\"��\u0001\u0003����_����c��'�8��CL\u0015H%����ǎ���M��6\u001f\u001c4���J�/^��p��[ٷneyx�\u0005\f\u001e�dԫW�n��ZY[��\u0007�w�\u000e�\b&�3g�T\u0015���0c���\u0013Q\u0012�\u0003~��S�\u0007\u000frp����)((JMMkhh������er������}mM݉�gf��bﾽ\u000e�?�ܗ�� K���h�<5�&��(�\u0018�FCCc�\b�T���cck��v\b4\u0011���_�rݷo�!C��/\u001eE\f\r!��\u0017�TWU\u0013���\u001d3\u001c��CǔO���\u000e\u000f�\b�\u0011\n����&��/�D�ݕ�/����J~��LI�mo\u001fOݻ���(�ę��@o\u001fOkkK�rq^�\u001e6��R�T6��P����)����4>&!bxX��A?����M�\tɲk��E \u0010\f\u001c؏���ĵ(��:����F\u001b\u001a\u0019����|�jsK�H$\u0012\n�/��\\aaQyY��b�N<;\u0000\u0000\u0000t\u0002\u0002𣡫�KDbq��R�L����;bXhH���k��']LLH��\td0%�n��P~���\u0002Y�\u0017�W�I$���Q�S\u0016_e\u00018:*~��S��t\u0007\u000e�ǌ5%���\u0010\"��K�5�Y޳����u\n�\u001a�����Ya{Nv\u001e�VPRRz��5߾���\u0007\u0007\u0007\u0007���%�����r[i�d\u000fO7\"��o`oFS\u0013��M�������������\t\u0013�\t\u000b\u000f�\u0005`ُlٴgeN�\u000eL�d��L�[���;M�p%�:\u0015GL�4��NSO\u001c?\u00131,L__o�GK��*.$_JLH�r�Zk�~�+;��pIq)\u0011\t�\u0005FF�C\"B,,�D\"�7\u001b6��ty�nDT]S����f\"b�#\u0010�T\"9s:��\u0017'�\r\t���\u001e&H��9;99��H]U�BD�F\u0006�O�op����͹��H�*NI�\u001c\u001a\u001a��n\u0000��ϗ��\\�r�9�{����k�[�\u0006F�L�NT�F\u000f���1��ӧbbbΩ)�+S\\T��\u001b�I+\u0014\n۽��SѾ}{���ijf�\f��\u0011\n\u0003\u0006\u000f$��*;�X�a��+���304psw�t\u0000.�]��E�\u001a\u001b���~\u001dq8\u001c\u000bKs;[k{G{�\u001e��L]Y�7\"�t9������,tH��?\u000e1\u001b����i7e���<\\��z�\r�Jש��\u0011���-�\f�\f�����w�%8;;0Cu�:B�s���H$\u0012.����|��U�Dr�����F������ddd%������ݱ�C\u0000\u0000\u0000�\u0012\b�����)\u0011U�\u001d����_���-�>=�|��~�}�|_}}FVfN¹�\u001f=![���Ĉ��]5��@��j�jX�75��D\"\u001d���n���ں���� �!�AL\u00162�0��ۇ�\u0007ˌ;���/����PaKC}����|�n�;��������ӷw���_y����ܤ��GO��ə���r_��|U\u000fe�T>��\u0019�OFO��������\u001b3w4��iϬ���\f�n��0�@S�\f��?n�gl���ޘ���gaa6r�Б��65�.�\\:\u0013\u0019�\\\u0007�~%%^H�~C��=�\u000f,[�p�@�%��߿�Y�ۖalh@D\u001e\u001e�j��ow���/<kaiޣ�W�t�;�����<ի��ީ�3^P�xû�������@���\u001c\u000eG*����&��\u0017�e��jll�����rO��޿\u001f.���_��5�X}��7��8$RicCc}��g�rW!\u00111\u001fL�zI*��Oj�3KOO7,l�G�( h�P(���OJ�3.��P�����T�\u0019���604P�)�qu���Y\u0019\u001b\u001b�\u0019;ү�������/�HNG�<�³a��L\u0000��B\u0002�(��W��WT��U6�����\u0000���u�d'!3�_�nw?�۶���Ս\u0018\u0016��r=��=��_�6���4�������\u0015�\u0000\u0000\u0000@\r\u0004�G@�����JD�g�UWU�x���KpH�_����\u000e\u001c\u000e��������1×-Y�L\u001a��u�M��˚��\u0010QK�?�#OD\u0005\u0005�3�W�j�\f\t�p�E�����\u0011QFFf\u0016[�2�QiJd�\u0017������O\\\\\u001c�Â��������p\\]�\\]�F?5������a�\\\u000e\u0011eddee�\\\u0019Hy�ڶ6�k\u0001\u0005\u0005E�i7�}<�222e?�OE��$\"�{\u0017\nR���\u0012ѭ��L�M\u0015�55�L\\�d��\u0001��������@_GG\u0018\u0014\u001c\u0010\u0014\u001c��ߧ~��\u000e>oG���?[����>���������j�����S�ee��ɟB��˘�a�����y<^X�`\":���\u0015\u0011��\u001e�S'δ��P-̿S��B�%��������!7'�O�^Dt�J�X�v���A��}��J���L\u0002O|���DTQQU�4\u0000�~=�*�---q��F�\u001a\u001a\u001a\u001e�\u0004`��vl�Y��\u0000\u000e���T|KpU<RG�����r�p�R��\u001c\u0011���gf�dg�\\��:z��0�Jק#c&M\u001eooo��ᚑ�������H$����\u0013[�\u0017����{�A�I:�\f/�w��CL̹�F�s�3o�0�������\u001f�\u000f��\r�?����\u0007�ǳ��\u001c���O��d�:��\u0005\u0000\u0000\u0000е\u0010�\u001f����LM�\u000b\u0017.��s���[�۶�637\u000b\u001c<04l�������S>�d\u0003\u0011���\u0019\u001a\u0019(��\u0012\u0011��\u0013\b�L�cz��L�8\\��/W}=]��J����\u0017/\\���453\u001d<x��#�\"B����X�����u�f�7�2�l�v�G�����������$0hPHH�OOo#cÙ�L]�j\u001d\u0011���k[h�L�����\u001e��N�����\f\t\r���\u001d̏�&��\\��y���wz�\f�\r�J\u0014�����H��Lg����\u0011\n3nf2�v�H$�>\u0013\u0017}&������\u001d\u001c\u001c\u0010\u001c�o`d8�agNǦ�ݼ���Rk�x���7l�TG(�������6�j����n���~��\u001d|@f�nPp�O?l�����ĸ��5V��2٤�?v\u001d(��'�J}C��ki�}{���J�dlb|����L�r9u��>=��9�׿\u000fu���G�ԉ������:���4442U�O�u����\u0013\u0011��342P\u001e���pL�L������Lkk\u000b��KO������-yo���~uuͯ?�r�|e�q�F�ܥ\u0010FqQ���\u001b={y��\r���\u001a2$����'ɏĮ��3116�wUa\u0019SS�;��^�����\u0006?v�ߎ\u0012Ko����������\u000e\f\u0018\u0010\u0014��@_\u0001�?�ٯ�^�:x\u001b\u0000\u0000\u0000�\n�@?l\u0002���)�\u0011�H$�W=����&,<x��0ٖ�򊣇�]��L�]�\u001ew�\u001cgg咊�={y���]���-3oe\u0013��P�vw���\u001e�|�?\n�\u0016��H$�O�\u0011Q`� GG{GG{�D�0\u000f��Qܫw\u000f�W\u0011\u0016\u001e\u001c>4ԣ�¶���Y��\u0007\u000f\u001f\u0019!�RYYu���eKV1e�d㮙��^�*�1$(|h(3]�#�cωD\"c\u0013co\u001fϠ�@\":\u001b��j��;\rȺ3���Y���ξC��9�U����>Nh���L�h--��_��F;ܭ����P\u0000\u0000 \u0000IDAT,�H�]�����.]�\u0011�+��ۣ�/�㊋J�n�AD|���\u000bސ\u000f!YY9Dԫ�\u000fk?[Hh`İPf��̹����F}}�޽{\u0004�\u0004\u0012Q�����$˦��f[(���d��\u0001�\u0003\f�.�$&�\u0010�_�޾=����k���\u0017�\u0012����_�>�z��\u0015�\u0019�_��1t�ƭ��B\"\n\b\u001c8`P?\u000e���W �-�u�����=��������ē-x����e+�esoE��ң����\u0019\u0011���o�g�\u0014�r[�Z\u0013�l�a\u0019��|��A::����Hi1�̌l\"��Ӌ�\u0014��Ӌ�Jo�577wɫ���e.l�.�#\u0014�{vLP����\u0019\u0011��\u0018\u0007\u0005\u0007<;a��m�\r�g\"c֬Z�T\u001c���4Q\u0011�\u0001\u0000\u0000�� \u0000?T:B��Eo2��\u001c�wXM\f\b\u001d\u0012�pћ��1S�\u000e*��v\u0019ݭ#MD�\u0013S������S1z��\r&�������kW�33\u0015�?��\u0004\b��a6��UܺuO<�<\u0019%�J{��1bT\u0004\u0011]�t���\u001e9�\f���� ��\n\u000fkkg=��7\u0016,��,v�\t���\u0017.z�93�\u0017ka\u000eB�݃p.!����\u001c�U����Z�{g΂�s�&����t.>��\u00041\u000b�0+��Qz�,7'��F�\u001e�p���iϞ^ZZ�ܜ|\"J8w��\u001c\u001c홪E�-�/��`�\u001cf�*�D���\u0005�_{i��%\u0000Fyy%󳻙m6�;q���KW����������ȼݶv6��~,,��/�;��9#G��ږ����sD\u0014\u001c\u001a8(�?\u0011�n�`\u0016\u0017�03��?;��0$o���_{i������7e��U����8�˗�\u0004���ª�j-���\u0019��(1!���{���\r\u0018<�߿\u001f�;\u000f����\n��P�'<�QZk�Y\u0007������b�̗�����D\\�%��������劝�^�\u001e��\u000eD$\u0010�\u0015n:\u001b���$����<�9\u0001����ڽ��\u0013\u0013�\u0013���U`�����ڒ��p�lR��̬]�-w�566]��JD��\fW��\u001a3v�˳�-y���\u0005\u0011yx�-yo�̗_twW�&XZv��aW%s\u0000\u0000\u0000P\u0005\u0001�[��\u00183\u0015���\u0006\u000f\u001e4lD�\u001bs_޲����ADt�ҵ�w�fa\u0015u&���M(\u0014.\\��l�\u001c\u0011yz�G\f\u000b#���;\u0005���\u0012�y���͗_pu���#���:(M\"ѡ���($4pƬ)Zws�P(|k�k={y\u0013���\u0014�AQaqz�M-�֘�#�(R)�DG�1%��/��@_�vkk��W,��x---����\u001c<�\u0007�\u0017��\u0004|��Kޖ����p\u001d6\"��dU�b�♃0o�\\�fXY[._�\u0016���Uy�'5N��&�\u0011�\"t���\u0012�iϪ��}��|��|y�4��566Z��m�@P]]s&2��bc���\u0015\u0010Ѽ\u0005o���%\"K+��+\u0017�i�cD$�H���\u0011ј�#��S\u0006�����i<\u001eO,n�__�������ӟ���TE*�~��/L���/N����\u001ck|\\\"��ߜ����\u0006\u000b\u000b�\u000f>\\��k�[�\u0007�\u001fQx4��Aİ0\u0003\u0003��K�U��,{����\u0011����e�eo=��}��\u0011��\f'����sqKo��d�\t�|�~�R�T�\\�T*e:���\u001dIi���\u000f\u0017}���Y�����yL���ikk��p�ۿ��T��J��w�'\"/o�\u0005Ａs7�ii�N�)Evp�\u0011ٸ\u0006����P��\u001b3�\t\u001aDԳ����\u0017tS�\u000b�N�~��\u0011�ˡ���l�;L\u001f��l�H���\u001b��\u0018R��AD��\u0017�N��\u0016�.�U`gg�b�b�@P_�p��:�f�����������>S�����%\u0012����\u0007+\u0017�[��v\u000e\n\u000e�2u\u0012\u0011�^MKKM'��\u0017.3\u001d��\u0017�amm)����lҤqD�z-]�؛o���'��o\u0019\u0000\u0000\u0000:\rs���o�^�}{��$�J�����3ә�JqQɞ�\u0007_�6i�~��:�Vv}C������+��)((ڻ��B bq�\u0017�~�z�rK+���~�~�fmm������-\u0011%%�\u001c=|������ή�!���M|&bXXzZ\u0006������\u0004���;�me�S'�}zxq����\u0006�\u0002B�����|��'�ML�?\\�477� �������SK���ֶi�f�U�:���|���/͚ү�-�|�q3��������Õ��\u0014\u0015\u0016�ڹ�f������MMM��!�H������]�z5������z:2�#݆�q\t��1n�S�\u001d\u0013:$�FZ�PG���SGG��*�����O[q����\u001bV����􃕋��\n��\n�\f\r�{x1M��-Ly3\"ڵs�\u0001}��-\u0017/�7e��b--������1\u0011�ܾ��\tg��ۛ�ZZZ;�2�()����\u0003/͚\"\u0010\b�����H�Ҷ���>ٰz�\u0007�\u0016f�X��W��W`hh����גJ$���r��7n��\u00150\u0003�OG�t�x�ٳI{�8��\u000b�\u000e\n\u0018�s�^�So���:;;0���9y[�&{'%�0K������z�|�\u001a���\u001b\u001a�^����w��:B!���\u0002f�����\u000b)�\u0007\u000e�'�rS�/UVV)�\u0010\u0013}�����\tc�D�\f����&��vg\u0006���%�\u0016\u0013\"���\u0017oed�{�\u000e\u001b>�߿~~������UCC�#Ǚ�_]+;;/)1e��!��n�.��oH�\\\\�<<���\u001bbc΅�\u0006�\u001b�ki�\u0014�*O��\u001e6|\b�˕J$�J�Ԥ\u0012ɺϾ^�v���凫��d�\u0015\u0016\u0016\u0019\u001b\u0019y����x��M_~�My\u0007&��b�����|��'D�ޒU�S���n���o��1ӧ�׏[6�]��P�`�`˜�e��\u001b��ܽ�U�������\u001d\u0007G��6�q�Vee�������\u0016_���q�\u000f[e��\\E�{��\u0003\u0000\u0000��C\u0000~\u0018�ⶦ����ei�o�Dū/�,�g������'�����u\u000245�����ؾWV(��rs�\u0016-�`Ƭ)\u0001��zޝ\\Z������\u0007�\u001f���\u001bR�d�\u0017�R��M�4���, p\u0000�=##����̠_e��^}�%�P\u0018\u001b}���%\\��\u0015,�����&\u0007�\u0005:990��\u0012э��~�ź\fi�\u001d����f�\u000b�Y[[�\u000e�H$��>�}�\u001f�l��\nޝ�|�K�C���m�.f\r���J��OE�8m�Tiڳ\u001a�nٞ���\u0013��-e#�Ӯ����姞\u0016\u0014\u0014-��|�Kχ�\rf&W3�o޸���]�rC:�j�-Z9k���A�����E\r���ھ�lgGrvП��\u0005�\rvuu���c��!�N�!��w\u0017,����aC�\u001c\u001c�e�322ߺ�����ȓ�3_��~-e\u0005;����̞��Dg\u0017�~��0\u001b��D'��ٽs��\n�I\t)Ͽ�,\u0011]�;\u0001�q�����(���\u001f\u0013�OF3�\bN�b?�����VF�\u000bS'88�Ɇ\u001b��\u0017\u001e>���\u0013g�/�H$��V~>���!��\u0006�\u0006=zz\u0013QZj�w�~�ыe\u0016q���og�1cHx������\u001d\u0011���D��޵s�@ \b\u000e\t������|����ү�(*,����z5M�\u0002����w\u0017��6mR��\u0010g\u0017G�Hk����s;��-*,�t���\u0012���\t\u001f\u001a�L�wp�c���9v� �p��\u0017<��e_S-��1Q������F�\bI\t�\u001f��lƬ)n�.>=���bq[bB�o��x��\u0001\u0000\u0000@\u0007q�M�\u001eu\u001b�ET�=�Ɔ��3����p��-��,\u0005\u0002~uUuNN^��\u001f�:N.Nz�:�5�YY9j:���l,�,ZZ[KKJ;Rh�#\u0004|������aKKK~^a��U��\u000b�ñ�����\u0012\b��U5�9y�Q\\�\u0019\u0005�E�=c\u000f�������T\"��/�P��(#��\u001d���o�P(tt�744\u001057���w�S�\u000b��Z��Nw\u001a_P\\YQ�MOdnafmc%�֮�����Us�k�A���������\u0019o��D\u0010������%�8��e��\u0005�\f\f�\u001d�\u001d\u0004|~QQ��9���t�\\�t���ں��<�E�;��*004���+.*V_z��tuuLMM��\u001b�-������ZGG���>7'_��r������\r�zs~^AC\u0017�\r\u0000\u0000\u0000څ\u0000\f\u0000�DZ�ђ\u0001\u0003���;���ݏ�-\u0000\u0000\u0000\u0000O\u0006\u0014�\u0002\u0000x����ѯ\u001f�Dr��S��-\u0000\u0000\u0000\u0000O\f�\u0001\u0006\u0000xb\u0004\u0005���\u0007�xܾ~�\\.7&�,�<X\u0000\u0000\u0000\u0000`�\u0000\f\u0000��hmk���+*,޲��G�\u001c\u0000\u0000\u0000�'\f\u00020\u0000�\u0013�fz����[����\u001f�7����Q�\b\u0000\u0000\u0000�I�\"X\u0000\u0000\u0000\u0000\u0000\u0000�\u0011P\u0004\u000b\u0000\u0000\u0000\u0000\u0000\u00004\u0002\u00020\u0000\u0000\u0000\u0000\u0000\u0000h\u0004\u0004`\u0000\u0000\u0000\u0000\u0000\u0000�\b\b�\u0000\u0000\u0000\u0000\u0000\u0000�\u0011\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@# \u0000\u0003\u0000\u0000\u0000\u0000\u0000�F@\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0000��\u0000\f\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u0001\u0001\u0018\u0000\u0000\u0000\u0000\u0000\u00004\u0002\u00020\u0000\u0000\u0000\u0000\u0000\u0000h\u0004\u0004`\u0000\u0000\u0000\u0000\u0000\u0000�\b\b�\u0000\u0000\u0000\u0000\u0000\u0000�\u0011\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@# \u0000\u0003\u0000\u0000\u0000\u0000\u0000�F@\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0000��\u0000\f\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u0001\u0001\u0018\u0000\u0000\u0000\u0000\u0000\u00004\u0002\u00020\u0000\u0000\u0000\u0000\u0000\u0000h\u0004\u0004`\u0000\u0000\u0000\u0000\u0000\u0000�\b\b�\u0000\u0000\u0000\u0000\u0000\u0000�\u0011\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@# \u0000\u0003\u0000\u0000\u0000\u0000\u0000�F@\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0000��\u0000\f\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u0001\u0001\u0018\u0000\u0000\u0000\u0000\u0000\u00004\u0002\u00020\u0000\u0000\u0000\u0000\u0000\u0000h\u0004\u0004`\u0000\u0000\u0000\u0000\u0000\u0000�\b\b�\u0000\u0000\u0000\u0000\u0000\u0000�\u0011\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@# \u0000\u0003\u0000\u0000\u0000\u0000\u0000�F@\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0000��\u0000\f\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u0001\u0001\u0018\u0000\u0000\u0000\u0000\u0000\u00004\u0002\u00020\u0000\u0000\u0000\u0000\u0000\u0000h\u0004\u0004`\u0000\u0000\u0000\u0000\u0000\u0000�\b\b�\u0000\u0000\u0000\u0000\u0000\u0000�\u0011\u0010�\u0001\u0000\u0000\u0000\u0000\u0000@# \u0000\u0003\u0000\u0000\u0000\u0000\u0000�F@\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0000��\u0000\f\u0000\u0000\u0000\u0000\u0000\u0000\u001a\u0001\u0001\u0018\u0000\u0000\u0000\u0000\u0000\u00004\u0002\u00020\u0000\u0000\u0000���������8�;�.(\n(E\u0004+\"�-*�\u0015\u000b��\u0011\u0013��n�?���������$vc�Db�F�\\\u000bj\u0012�\u0015\u0011\u0005\u0011QPlt�\"��`��\u0003(j$��r?�G윙9��<����\u0005\u0000@\u0015\b�\u0000\u0000\u0000\u0000\u0000U \u0000\u0003\u0000\u0000\u0000\u0000T�\u0000\f\u0000\u0000\u0000\u0000P\u0005\u00020\u0000\u0000\u0000\u0000@\u0015\b�\u0000\u0000\u0000\u0000\u0000U \u0000\u0003\u0000\u0000\u0000\u0000T�\u0000\f\u0000\u0000\u0000\u0000P\u0005\u00020\u0000\u0000\u0000\u0000@\u0015\b�\u0000\u0000\u0000\u0000\u0000U \u0000\u0003\u0000\u0000\u0000\u0000T�\u0000\f\u0000\u0000\u0000\u0000P\u0005\u00020\u0000\u0000\u0000\u0000@\u0015\b�\u0000\u0000\u0000\u0000\u0000U \u0000\u0003\u0000\u0000\u0000\u0000T�\u0000\f\u0000\u0000\u0000\u0000P\u0005\u00020\u0000\u0000\u0000\u0000@\u0015\b�\u0000\u0000\u0000\u0000\u0000U \u0000\u0003\u0000\u0000\u0000\u0000T�\u0000\f\u0000\u0000\u0000\u0000P\u0005\u00020\u0000\u0000\u0000\u0000@\u0015\b�\u0000\u0000\u0000\u0000\u0000U \u0000\u0003\u0000\u0000\u0000\u0000T��e\u000f��boo��䘚�\u0011�f�t�Y����\">!15-�L:,C�U]�Y[�H�u�~��\u001e�\u0013�ԭ��h�.���\u0015���k\u0015�r6�����{�\u0006\u0000\u0000\u0000࿍\u0019�ԫk`؞��&�/�\u000e?_4-l���-\u001a�U�ehތw����ک��\u001eHi\u000e�Z\u001b�g�CE{�pƤ�a{���\u001e�rG\u0005\u0000\u0000\u0000� \u0000\u0003\u0000\u0000\u0000\u0000T�%�x��\r��\u0011\r\u000b�\u0001\u0000\u0000\u0000\b\u0001\u0018��#\u0011'_�\u0010\u0000\u0000\u0000\u0000�� \u0000�#LM�\u0007���ߴ���qdԕ������(V��а}��\u0001�\u001aVqr055NIM?u6r{���\u0019��wn``\u0010�ο}��N�\u0015�3�ϟ�\nٱ����v�266\u001a=|����M!;}��\u001aз��s唔��\u0007\u000f��XDl���\f����n^~�Ũ�M[v���\u0015�\u0016?�:݂�yTu�j�q�\t�����O�c�cme9�׆~�f��1W���w���g�J5��w\u000elY���m9��̬ث\t{~����+�\n�jT��6���\u000b�c��?~��C�Sg.��\u001c�����E�.m\u001b7�Pޮ�P�|�ޡ���\u001d8���#]\u000f�G\u0005k4��\u001b�+Mt,��\u0007��ָ����I쵄���\"�bt�֮�Ѿ���Ĥ\u001d�\u000e���ٶU�\u001bI?�)R^�F�iѼQ��\u0001.U�RR�.�\\�\u001a������u\f\r\r;�\u000fh۲��cŬ�Ȩ�m�{\u0013����\u00193|У��UkBjxV\u001d<����kZz�/�N��}������l`���5�\u0015��+��Bv%߹�,W\u001e\u0000\u0000\u0000P'�����\u001e�?��\u0003/��V�/�\u0017�t�\u0003��z�؉3�֖���ԕ��\u0015L��h�w��\u0012W�ʛ�,�U�Z�\u001e��K�5xlTt�r���o\u001a7�\u00191nJ��0�ġ����\u00176��*=#s�;3��\u001dU\u000e-��\u0013�\u000f�\\�߸�ǙS�\u001b\u001a\u001a�j._�ac���\u001b���T�\u0015޸y�mס�\bmjj�l���=;\u0015\u001b�死�oڂ���?\u000e�,���͆�:�pr���VPP�Τ�!���r�\f\r\r��|wؐ>\u0006\u0006E�B�j��\u0017��u�a�^�W,��ruH��\r���T\n�v\t>\u001f\u0019\u001d�.`��Y�l���|�̅^\u0003�f?|�\u001c&ǝ044�m��F�m\u0011Y�b~�.�6l\u000emݲ�K\u0015G]�G�\u001e}4cѺM;�����|�d��c�z\u000e\u001a������>[8�#��\u001b2����h_~����_���5|̔��'�C�*�kW-��][���ܼ\u0019s��ٰ]W�\u0010}877��eK�O11��窐m{�.�j�����B���ƍ��J\u0019\u001b\u0000\u0000\u0000�fl�U��7��U�cʬ%�^��4����\u0010\u0013\u0013���&5o�G\"200X��_�jT�8~:��0w��^�:\u000f\u001b=�F�m{{�YS�\u0018��LMB�-k�[7*:���q�^�}�\u0006}��\u001a+K��_-�WG���s���&n۱�}�7\u0002:\f\\�&DDƌ\u0018�}��윇�\u000f��Q����NMMKwqv\u001a\u001e�W�PI�\u000f\u001e��{vu�v�뷟�sS��\u0007��x�bC\u001a\u0016�����\u0011������{đ��FFF��~dcmU�%\u001a6����2��GM��ը��W�vAC����F�����Ε\u001d�+\u000f�����m��\u001f\u0016���=\u0007�GF�8;}���r6֫ք4nջj�V\r\u0002zΚ�</�����\u001b��*�\u0006\u0005\u000f�)\"�&Lo\u0010�3�ǰ��'\f\r\r��x��ޮ�����`��\u0005�^󋊎�5x�k�\u0016~�=B������v�����E���bۦ���k_�x��1n�[�6��u&�F\u000b?��_���\u001dZYZ,�dʁ�\u001d{�լm��K�\u0011�\u0001}�vo]ian�֘)MZ�\u00194���w���&�\n~�S\u0000\u0000\u0000\u0000^U,��G�~g�Ο�D$#3kʬ%��2�\u0001��{;���\"ҨA=����32���@Y�����kox^~��o\u0017�\u0016ͱ��\f���U#1)9��He�tFf�'���j�\u001fL|k�\t�\u0007��U635ٱ��\u000f�(��?^ֱ]��k\u0015ss�֝���g�ȵ�\u001b�\u001e���{����j��^}{v��/�\u0017<�܅KJ�死��\\���7\u0003�u]��zk�SR�:�\u001e~�^��$�Hzc�Gg��,gcݤQ���D<�DF��WD��Y��ǟ��s\u0017.�\u0018?���]\u000e���ּ����\\��z���C���+y�ws3���'��^��dfe�j���Ӱ�>>>O�����ν�ߺ}GD�'$\u000e\u001b5���P{{�f��v�\r/��S\u0005ulݸ���{\u000fz\f\u001c�L�'�H���\\�j��\u001a��ݽ���!o\r��Y��zBb��������=oъ���YS'̙:q��𜇹J���FG\"N�9z�V�\u0015��˾iצ��O\u001d\u0007\u0007��-��N�+\"W�%,���O�O�����\u0007\u0000\u0000\u0000^a�\u0000���1ה�����D�ƾ�\u0004`ԥ�νG�үN��8\u0011���xR�}{v\u0014�U��/���5�k���M�*U��_\u001e�m�����B����C'������)\"U��t�\u001e�ND~\u000e;�K��3�.��������^�|��_���H�ȼ\u0018\u0015#\"\u000e���D�F�ys���o���\u0013���\u0005W�\u0012D�ڪ��q���\u001d��뗬�\u001c�g���s�\u0016�9:&NDl��x\u0001\u0015�\u000e\u001cVү\"+;���h\u0011q�d_z�gѥSk\u0011ټu��Sم��3�/w���\u0011'E�[�6\"�շ�����BRR������5�/\u000f��'%�*�.ň����*�W\u0011=Q��#\u0000\u0000\u0000���\u0001.{��b��$�JN�ȴ���S�#�fdf�~��m9�\u001a��=��ծ���Z\u0003\u0011166200(,,,։���2O[�����W_Ff�ҿ�)S\u0011����_'3;GD\u0012n&�\u0017>HI\u0013\u0011�s����\u0014��%NAD�\u0013y�c�\u0016޵��1�]K(VM���¼d\u000f\n�V{�R��K�\"bbb����Y���õq�z���D���X��ո���\u0002���[�I���\"v���Y������w�\u0001�Eĸh��JlH����ܬ�Ϣn��\"r9�Z���O�Wn����w�\u001a\"r!�J�:yy\u0005�W�6�W����yll�~�̬\u001c\u0011IH(r\u001fS��G\u0000\u0000\u0000\u0000%\u0011��^R���\u0014޺ccmek�ǦM��ێ\u001a6p@�Ε����+}\u000b_\u001bk+cc#\u0011\u0019�ր'ձ�+����]�NNNn)�bkk#\"7\u0013\u001fs\n7�n�H9�\"�Ne��\u0014��\u0015�<�F��\u0011�v�[��խ����deg\u0017\u0014\u0014��\u0016���7_�S���1C\u0003��[[Y*%�����YRvV�1�V+\"\u001aͳ�~\n��v\"�t;�I\u0015l��������ݪ\u0012n&5m�kSts�����G�F_\u0000\u0000\u0000\u0000�\u0011\u0001�왚��,���\u0014���\"R��m��\r.U\u001c\u001f���v���3\u0017\"�b�_����?}4�d[EA�\u001f��Sg/�����|�\\������Y����\u0002\u0011�|�2lC\u0003\u0003\u0011��xL\u0018{^��~��~\"r�Z��S�9\u001fy9�ҕ��.nY��n�0��\u0012g�¿��k���\u001a���\u001d\b�8}.����g#�:�^4��\u0017\u001f��а�\u0003\u0002��^�G��D����\u0013�yyl�m�gt/�FF\"�Ytm|�+\u0000\u0000\u0000\u0000�o \u0000�����\u001a\u001b\u001b99؋H$\u0011\u0019?*إ�cܵ�.}F޽�@WM������n\u000f$���\u001ce\u001du�ͤ}\u0007��C�OJJ����$\u001dO\u000f7\u0011I.�2ۿ�fuw%�\u000e\u001b=�ئS������0ϝ��������ǿ?;?����v�6\"bj��\u001f �KA~��XX\u0016\u000f��N�?V��;�*V(�,�{U�n��D_��\u001fv4%5����Ź��Է>�j�\"�|�E/2\u0000\u0000\u0000���\u0004��\nhbVt\u0012�}�憆�w��W\u001e\r���#\";v\u001d�O�\"���7ǚ�\u0015_\u0006,\"Z����gD�S�\u0016�>���\u001c\u001fu�Xؖ*�+�l�\\��zFD:�i^�iR##���V\"r���/�\u0015>޵E$�Vr��kooW�zU\u0011�0+�Y\\SSc��k6l�O�\"��z���1W﹤�g�H���ߊԸ��S����y\u0011iѼQ��\u001eAm�46x`\u000f\u0011��>\u0006\u0014��^ե�WM\u00119z���\u001c:\u0000\u0000\u0000�'#\u0000��r6�s�����R\u000fw�y3�\u0017���nQ��J�u[D�|��[���yo�0�o�'$���m\u0011�\u0001}�z�m�lfj��_S�,-���\u0013��<��ۺcojZzu��3&�ӝ�����i\u0013��9߿�����~�>\u0003�\u0005\u0004\u000f�\u0019м�r��~��\u0015\\��tu,-,V,�mdd$\"f�&���|凃���\\��o\u000eh��D����E|B���Tq���_W8�oPۖM���pw\r\u001e�3xPO��\u0005\u001b6�(((\b�غK�V�j�.�ǌx]D�ۺ\u0010F|�\u0000\u0000\u0006�IDATKD�Y�E��\u000e�߭s`K]\u001d\u001bk�\u0015Kf\u001a\u0018\u0018\u001c���Z�m�\u0000\u0000\u0000\u0000�8�@���\t�Â��x�\n?|¶�u��]��XG\u001c?��כ�\n������Ԧ�kۿ[~ �F#\r��u\tl\u0015\u0017�PXXh[ΦB�r����9\u0012qr��\r�G\u0005�|^��^��^061�֩���SzF��\u0017�����3Ƽ;k�ʅcG\f�o��`�1�Fӡ���W�����ߙ�����}�\u001b�z�&��~���S\"r���\u001b7o�8;��ᛍ!;�ܽ��R�O��vv�g�\u0013�[����SV\u001a��>0��\u0001�'���p��\u0014ceiٱ��>��<פQ};[\u001b�F��ޠ�\u0015\u001bw=��i�f\r֯Zx <\"��톾�~��\u000e�G�Gb\u0011i԰ޒO&�Ȗ\u001f�<z�HD���Ϟ���\u0019�[�`߁#�#/Uqr��=�����=\u0007��?,\"\u0011�O�Ն�c�*��9��ֶg�v\u000e��o$�\u001e���{�\u0000\u0000\u0000\u0000JA\u0000.{��\u000f޻�`�\u0007�\u001a��\u0015���y+W��]��n���_\"ޝ4�q���(���i��Wn���u�:�GP�΁�\"�\u001e�\"\"\u0011���\u0017�c�?�8ܿY\u0003�f\rDD��\u001e��m��%\u001f(�{\u000e�Gt�7��i\u0013\u001b7��[KD\n\u000b\u000b�\u000f����r��E/(�an�!\u0013V,��W���wF�ȣG��\u000f��x���\u001d+m��Y�\u000e-��YZJ��5�s\u0013c�����^\u0007\u0015\u001bw}��\u0019��\u000fF���P�ޯ��鳑Oj�,�\u001c3i�t\u0013�\u0019�Ys\u0017��\u001fv�X\u0000~��V���i\u001f��\u001c�R�����^���O�����x��Wb�'�72�]@`�\u0000\u0011����\u0014�s���P^h\u0004\u0000\u0000\u0000��iL��^�\u0018�\u0011�\u001e\u0014Y\u001f۪����\u0000,���z��j���c\u001f�:\"cc#\u0017g�*�\u001d��O�\u001csM�?|v\u001e��\u0019�Y�\t��\u0019�e4�\"\u001c\u001d*Vus��Ϗ���O�����ݫ�h�ژ��Դ�X���p�Z���:1)�zBb�\u000fOD*T���ភ�{��Ւے=�g57GG��̜�˱\u000fs�J����\u001ew�fv�wJ\u0001\u0000\u0000\u0000(C\u0004`\u0000\u0000\u0000\u0000�*�\t\u0016\u0000\u0000\u0000\u0000@\u0015\b�\u0000\u0000\u0000\u0000\u0000U \u0000\u0003\u0000\u0000\u0000\u0000T�\u0000\f\u0000\u0000\u0000\u0000P\u0005\u00020\u0000\u0000\u0000\u0000@\u0015\b�\u0000\u0000\u0000\u0000\u0000U \u0000\u0003\u0000\u0000\u0000\u0000T�\u0000\f\u0000\u0000\u0000\u0000P\u0005\u00020\u0000\u0000\u0000\u0000@\u0015\b�\u0000\u0000\u0000\u0000\u0000U \u0000\u0003\u0000\u0000\u0000\u0000T�\u0000\f\u0000\u0000\u0000\u0000P\u0005\u00020\u0000\u0000\u0000\u0000@\u0015\b�\u0000\u0000\u0000\u0000\u0000U \u0000\u0003\u0000\u0000\u0000\u0000T�\u0000\f\u0000\u0000\u0000\u0000P�W6\u0000�M���}'��%�\u0004\u0000\u0000\u0000\u0000���\r���IR2�Ă��$���\u0000\u0000\u0000\u0000\u0000^2�����\u001e\u0003\u0000\u0000\u0000\u0000\u0000��Wv\u0006\u0018\u0000\u0000\u0000\u0000\u0000}\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000�@\u0000\u0006\u0000\u0000\u0000\u0000�\u0002\u0001\u0018\u0000\u0000\u0000\u0000�\n\u0004`\u0000\u0000\u0000\u0000�*\u0010�\u0001\u0000\u0000\u0000\u0000����~�\u0005�Ӕ]\u0000\u0000\u0000\u0000IEND�B`�"
                  }
                }
              }
            },
            "headers": {
              "ETag": {
                "description": "Quoted current icon digest. Send it in If-None-Match to reuse a cached image.",
                "schema": {
                  "type": "string"
                },
                "example": "\"862019886d8c1034c41a62f1972409e18c6f76427f279a2e86469c28ee0cfe77\""
              }
            }
          },
          "304": {
            "description": "The If-None-Match header equals the current digest. Reuse the cached image; this response has no body."
          },
          "404": {
            "description": "This uploaded icon cannot be found. Operation: Download an uploaded icon image.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Not Found\n"
                },
                "example": "Not Found\n"
              }
            }
          },
          "503": {
            "description": "Uploaded image storage is unavailable while attempting to download an uploaded icon image.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "example": "Icons unavailable\n"
                },
                "example": "Icons unavailable\n"
              }
            }
          }
        },
        "tags": [
          "Icons"
        ],
        "summary": "Download an uploaded icon image",
        "description": "Returns raw image bytes with the stored Content-Type, a quoted digest ETag, Cache-Control: no-cache, and X-Content-Type-Options: nosniff. Send that ETag in If-None-Match for a bodyless 304 response. This endpoint serves uploaded IDs only; it does not serve bundled icon references. No JSON envelope is used for successful downloads."
      }
    },
    "/api/v1/presentation": {
      "get": {
        "operationId": "GetPresentation",
        "tags": [
          "Presentation"
        ],
        "summary": "Read global presentation and active snapshot",
        "responses": {
          "200": {
            "description": "Current global settings revision and the selected complete snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PresentationState"
                },
                "example": {
                  "settings": {
                    "revision": "0",
                    "colorMode": "system",
                    "selection": {
                      "kind": "builtin",
                      "key": "goshtoso"
                    }
                  },
                  "catalogRevision": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b",
                  "definition": {
                    "schemaVersion": 1,
                    "tokens": {
                      "backdrop": {
                        "space": "srgb",
                        "channels": [
                          0,
                          0,
                          0
                        ],
                        "alpha": 1
                      },
                      "backdrop-surface": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "control-outline": {
                        "space": "srgb",
                        "channels": [
                          0.47843137254901963,
                          0.5294117647058824,
                          0.5882352941176471
                        ],
                        "alpha": 1
                      },
                      "control-outline-dark": {
                        "space": "srgb",
                        "channels": [
                          0.44313725490196076,
                          0.5137254901960784,
                          0.592156862745098
                        ],
                        "alpha": 1
                      },
                      "danger": {
                        "space": "srgb",
                        "channels": [
                          0.8627450980392157,
                          0.14901960784313725,
                          0.14901960784313725
                        ],
                        "alpha": 1
                      },
                      "danger-action": {
                        "space": "srgb",
                        "channels": [
                          0.5301960784313725,
                          0.1349019607843137,
                          0.1568627450980392
                        ],
                        "alpha": 1
                      },
                      "danger-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9176470588235295,
                          0.4894117647058824,
                          0.4894117647058824
                        ],
                        "alpha": 1
                      },
                      "danger-text": {
                        "space": "srgb",
                        "channels": [
                          0.15607843137254904,
                          0.11901960784313725,
                          0.16568627450980394
                        ],
                        "alpha": 1
                      },
                      "danger-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9794117647058823,
                          0.8723529411764706,
                          0.8723529411764706
                        ],
                        "alpha": 1
                      },
                      "info": {
                        "space": "srgb",
                        "channels": [
                          0.058823529411764705,
                          0.4627450980392157,
                          0.43137254901960786
                        ],
                        "alpha": 1
                      },
                      "info-action": {
                        "space": "srgb",
                        "channels": [
                          0.04784313725490196,
                          0.32313725490196077,
                          0.3262745098039216
                        ],
                        "alpha": 1
                      },
                      "info-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.43529411764705883,
                          0.6776470588235295,
                          0.6588235294117647
                        ],
                        "alpha": 1
                      },
                      "info-text": {
                        "space": "srgb",
                        "channels": [
                          0.035490196078431374,
                          0.16607843137254902,
                          0.2080392156862745
                        ],
                        "alpha": 1
                      },
                      "info-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8588235294117647,
                          0.9194117647058824,
                          0.9147058823529411
                        ],
                        "alpha": 1
                      },
                      "on-danger": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-danger-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-danger-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-info": {
                        "space": "srgb",
                        "channels": [
                          0.9607843137254902,
                          0.9882352941176471,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-info-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-info-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-primary": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-primary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.023529411764705882,
                          0.08235294117647059,
                          0.11764705882352941
                        ],
                        "alpha": 1
                      },
                      "on-secondary": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-secondary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-success": {
                        "space": "srgb",
                        "channels": [
                          0.9411764705882353,
                          0.9921568627450981,
                          0.9568627450980393
                        ],
                        "alpha": 1
                      },
                      "on-success-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-success-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-surface": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark": {
                        "space": "srgb",
                        "channels": [
                          0.7529411764705882,
                          0.796078431372549,
                          0.8470588235294118
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark-muted": {
                        "space": "srgb",
                        "channels": [
                          0.6511764705882352,
                          0.6913725490196078,
                          0.7388235294117647
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark-strong": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-surface-muted": {
                        "space": "srgb",
                        "channels": [
                          0.3433333333333333,
                          0.4,
                          0.4666666666666667
                        ],
                        "alpha": 1
                      },
                      "on-surface-strong": {
                        "space": "srgb",
                        "channels": [
                          0.03137254901960784,
                          0.11372549019607843,
                          0.16862745098039217
                        ],
                        "alpha": 1
                      },
                      "on-warning": {
                        "space": "srgb",
                        "channels": [
                          0.12941176470588237,
                          0.08627450980392157,
                          0.023529411764705882
                        ],
                        "alpha": 1
                      },
                      "on-warning-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-warning-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "outline": {
                        "space": "srgb",
                        "channels": [
                          0.7529411764705882,
                          0.796078431372549,
                          0.8470588235294118
                        ],
                        "alpha": 1
                      },
                      "outline-dark": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "outline-dark-strong": {
                        "space": "srgb",
                        "channels": [
                          0.6274509803921569,
                          0.6941176470588235,
                          0.7725490196078432
                        ],
                        "alpha": 1
                      },
                      "outline-strong": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "primary": {
                        "space": "srgb",
                        "channels": [
                          0.12941176470588237,
                          0.4470588235294118,
                          0.6392156862745098
                        ],
                        "alpha": 1
                      },
                      "primary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.23137254901960785,
                          0.807843137254902,
                          0.9686274509803922
                        ],
                        "alpha": 1
                      },
                      "secondary": {
                        "space": "srgb",
                        "channels": [
                          0.29411764705882354,
                          0.49019607843137253,
                          0.10980392156862745
                        ],
                        "alpha": 1
                      },
                      "secondary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8274509803921568,
                          0.8431372549019608,
                          0.3568627450980392
                        ],
                        "alpha": 1
                      },
                      "success": {
                        "space": "srgb",
                        "channels": [
                          0.01568627450980392,
                          0.47058823529411764,
                          0.3411764705882353
                        ],
                        "alpha": 1
                      },
                      "success-action": {
                        "space": "srgb",
                        "channels": [
                          0.02196078431372549,
                          0.32784313725490194,
                          0.27215686274509804
                        ],
                        "alpha": 1
                      },
                      "success-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.40941176470588236,
                          0.6823529411764706,
                          0.6047058823529412
                        ],
                        "alpha": 1
                      },
                      "success-text": {
                        "space": "srgb",
                        "channels": [
                          0.029019607843137254,
                          0.16725490196078432,
                          0.19450980392156864
                        ],
                        "alpha": 1
                      },
                      "success-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8523529411764705,
                          0.9205882352941176,
                          0.9011764705882352
                        ],
                        "alpha": 1
                      },
                      "surface": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "surface-alt": {
                        "space": "srgb",
                        "channels": [
                          0.9176470588235294,
                          0.9568627450980393,
                          0.984313725490196
                        ],
                        "alpha": 1
                      },
                      "surface-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "surface-dark-alt": {
                        "space": "srgb",
                        "channels": [
                          0.14901960784313725,
                          0.2196078431372549,
                          0.2784313725490196
                        ],
                        "alpha": 1
                      },
                      "warning": {
                        "space": "srgb",
                        "channels": [
                          0.9607843137254902,
                          0.6196078431372549,
                          0.043137254901960784
                        ],
                        "alpha": 1
                      },
                      "warning-action": {
                        "space": "srgb",
                        "channels": [
                          0.5890196078431372,
                          0.4172549019607843,
                          0.09333333333333334
                        ],
                        "alpha": 1
                      },
                      "warning-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9764705882352941,
                          0.7717647058823529,
                          0.4258823529411765
                        ],
                        "alpha": 1
                      },
                      "warning-text": {
                        "space": "srgb",
                        "channels": [
                          0.17078431372549022,
                          0.1896078431372549,
                          0.14980392156862746
                        ],
                        "alpha": 1
                      },
                      "warning-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9941176470588236,
                          0.9429411764705882,
                          0.8564705882352941
                        ],
                        "alpha": 1
                      }
                    },
                    "typography": {
                      "title": {
                        "source": "system",
                        "id": "stack-8a430142f47a470b2f0755a4"
                      },
                      "body": {
                        "source": "system",
                        "id": "stack-58751021b6049b7de349355e"
                      }
                    },
                    "radiusRem": 0.5,
                    "provenance": {
                      "presetKey": "goshtoso",
                      "goshtosoVersion": "catalog:ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b",
                      "catalogRevision": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PresentationInvalid"
          },
          "404": {
            "$ref": "#/components/responses/PresentationMissing"
          },
          "409": {
            "$ref": "#/components/responses/PresentationRejected"
          },
          "503": {
            "$ref": "#/components/responses/PresentationUnavailable"
          }
        },
        "description": "Returns one consistent settings revision and selected snapshot. Empty initialization is Goshtoso/System at revision 0. Storage or unsupported saved-definition errors return 503 without resetting data."
      },
      "put": {
        "operationId": "SavePresentation",
        "tags": [
          "Presentation"
        ],
        "summary": "Atomically save and activate presentation",
        "responses": {
          "200": {
            "description": "Committed global selection and command receipt, or the same receipt on an immediate exact replay.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PresentationReceipt"
                },
                "example": {
                  "commandId": "11111111-1111-4111-8111-111111111111",
                  "settings": {
                    "revision": "1",
                    "colorMode": "dark",
                    "selection": {
                      "kind": "builtin",
                      "key": "goshtoso"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PresentationInvalid"
          },
          "404": {
            "$ref": "#/components/responses/PresentationMissing"
          },
          "409": {
            "$ref": "#/components/responses/PresentationRejected"
          },
          "503": {
            "$ref": "#/components/responses/PresentationUnavailable"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PresentationSave"
              },
              "example": {
                "commandId": "11111111-1111-4111-8111-111111111111",
                "expectedSettingsRevision": "0",
                "colorMode": "dark",
                "selection": {
                  "kind": "builtin",
                  "key": "goshtoso",
                  "expectedCatalogRevision": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
                }
              }
            }
          },
          "description": "Atomic Save command with expected settings and selection revisions."
        },
        "description": "Checks settings, theme and catalog revisions, validates references and commits one transaction. Immediate identical command replay returns its receipt. Reusing a command ID with different content conflicts. After another Save, stale commands conflict. Never force or silently rebase."
      }
    },
    "/api/v1/themes": {
      "get": {
        "operationId": "ListThemes",
        "tags": [
          "Presentation"
        ],
        "summary": "Read every installed preset and custom theme",
        "responses": {
          "200": {
            "description": "Every installed preset and every independently saved custom snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeCatalog"
                },
                "example": {
                  "catalogRevision": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b",
                  "builtins": [
                    {
                      "key": "goshtoso",
                      "label": "Goshtoso",
                      "definition": {
                        "schemaVersion": 1,
                        "tokens": {
                          "backdrop": {
                            "space": "srgb",
                            "channels": [
                              0,
                              0,
                              0
                            ],
                            "alpha": 1
                          },
                          "backdrop-surface": {
                            "space": "srgb",
                            "channels": [
                              0.07450980392156863,
                              0.09803921568627451,
                              0.12549019607843137
                            ],
                            "alpha": 1
                          },
                          "control-outline": {
                            "space": "srgb",
                            "channels": [
                              0.47843137254901963,
                              0.5294117647058824,
                              0.5882352941176471
                            ],
                            "alpha": 1
                          },
                          "control-outline-dark": {
                            "space": "srgb",
                            "channels": [
                              0.44313725490196076,
                              0.5137254901960784,
                              0.592156862745098
                            ],
                            "alpha": 1
                          },
                          "danger": {
                            "space": "srgb",
                            "channels": [
                              0.8627450980392157,
                              0.14901960784313725,
                              0.14901960784313725
                            ],
                            "alpha": 1
                          },
                          "danger-action": {
                            "space": "srgb",
                            "channels": [
                              0.5301960784313725,
                              0.1349019607843137,
                              0.1568627450980392
                            ],
                            "alpha": 1
                          },
                          "danger-action-dark": {
                            "space": "srgb",
                            "channels": [
                              0.9176470588235295,
                              0.4894117647058824,
                              0.4894117647058824
                            ],
                            "alpha": 1
                          },
                          "danger-text": {
                            "space": "srgb",
                            "channels": [
                              0.15607843137254904,
                              0.11901960784313725,
                              0.16568627450980394
                            ],
                            "alpha": 1
                          },
                          "danger-text-dark": {
                            "space": "srgb",
                            "channels": [
                              0.9794117647058823,
                              0.8723529411764706,
                              0.8723529411764706
                            ],
                            "alpha": 1
                          },
                          "info": {
                            "space": "srgb",
                            "channels": [
                              0.058823529411764705,
                              0.4627450980392157,
                              0.43137254901960786
                            ],
                            "alpha": 1
                          },
                          "info-action": {
                            "space": "srgb",
                            "channels": [
                              0.04784313725490196,
                              0.32313725490196077,
                              0.3262745098039216
                            ],
                            "alpha": 1
                          },
                          "info-action-dark": {
                            "space": "srgb",
                            "channels": [
                              0.43529411764705883,
                              0.6776470588235295,
                              0.6588235294117647
                            ],
                            "alpha": 1
                          },
                          "info-text": {
                            "space": "srgb",
                            "channels": [
                              0.035490196078431374,
                              0.16607843137254902,
                              0.2080392156862745
                            ],
                            "alpha": 1
                          },
                          "info-text-dark": {
                            "space": "srgb",
                            "channels": [
                              0.8588235294117647,
                              0.9194117647058824,
                              0.9147058823529411
                            ],
                            "alpha": 1
                          },
                          "on-danger": {
                            "space": "srgb",
                            "channels": [
                              1,
                              1,
                              1
                            ],
                            "alpha": 1
                          },
                          "on-danger-action": {
                            "space": "srgb",
                            "channels": [
                              1,
                              1,
                              1
                            ],
                            "alpha": 1
                          },
                          "on-danger-action-dark": {
                            "space": "srgb",
                            "channels": [
                              0.07450980392156863,
                              0.09803921568627451,
                              0.12549019607843137
                            ],
                            "alpha": 1
                          },
                          "on-info": {
                            "space": "srgb",
                            "channels": [
                              0.9607843137254902,
                              0.9882352941176471,
                              1
                            ],
                            "alpha": 1
                          },
                          "on-info-action": {
                            "space": "srgb",
                            "channels": [
                              1,
                              1,
                              1
                            ],
                            "alpha": 1
                          },
                          "on-info-action-dark": {
                            "space": "srgb",
                            "channels": [
                              0.07450980392156863,
                              0.09803921568627451,
                              0.12549019607843137
                            ],
                            "alpha": 1
                          },
                          "on-primary": {
                            "space": "srgb",
                            "channels": [
                              1,
                              1,
                              1
                            ],
                            "alpha": 1
                          },
                          "on-primary-dark": {
                            "space": "srgb",
                            "channels": [
                              0.023529411764705882,
                              0.08235294117647059,
                              0.11764705882352941
                            ],
                            "alpha": 1
                          },
                          "on-secondary": {
                            "space": "srgb",
                            "channels": [
                              1,
                              1,
                              1
                            ],
                            "alpha": 1
                          },
                          "on-secondary-dark": {
                            "space": "srgb",
                            "channels": [
                              0.07450980392156863,
                              0.09803921568627451,
                              0.12549019607843137
                            ],
                            "alpha": 1
                          },
                          "on-success": {
                            "space": "srgb",
                            "channels": [
                              0.9411764705882353,
                              0.9921568627450981,
                              0.9568627450980393
                            ],
                            "alpha": 1
                          },
                          "on-success-action": {
                            "space": "srgb",
                            "channels": [
                              1,
                              1,
                              1
                            ],
                            "alpha": 1
                          },
                          "on-success-action-dark": {
                            "space": "srgb",
                            "channels": [
                              0.07450980392156863,
                              0.09803921568627451,
                              0.12549019607843137
                            ],
                            "alpha": 1
                          },
                          "on-surface": {
                            "space": "srgb",
                            "channels": [
                              0.22745098039215686,
                              0.29411764705882354,
                              0.37254901960784315
                            ],
                            "alpha": 1
                          },
                          "on-surface-dark": {
                            "space": "srgb",
                            "channels": [
                              0.7529411764705882,
                              0.796078431372549,
                              0.8470588235294118
                            ],
                            "alpha": 1
                          },
                          "on-surface-dark-muted": {
                            "space": "srgb",
                            "channels": [
                              0.6511764705882352,
                              0.6913725490196078,
                              0.7388235294117647
                            ],
                            "alpha": 1
                          },
                          "on-surface-dark-strong": {
                            "space": "srgb",
                            "channels": [
                              1,
                              1,
                              1
                            ],
                            "alpha": 1
                          },
                          "on-surface-muted": {
                            "space": "srgb",
                            "channels": [
                              0.3433333333333333,
                              0.4,
                              0.4666666666666667
                            ],
                            "alpha": 1
                          },
                          "on-surface-strong": {
                            "space": "srgb",
                            "channels": [
                              0.03137254901960784,
                              0.11372549019607843,
                              0.16862745098039217
                            ],
                            "alpha": 1
                          },
                          "on-warning": {
                            "space": "srgb",
                            "channels": [
                              0.12941176470588237,
                              0.08627450980392157,
                              0.023529411764705882
                            ],
                            "alpha": 1
                          },
                          "on-warning-action": {
                            "space": "srgb",
                            "channels": [
                              1,
                              1,
                              1
                            ],
                            "alpha": 1
                          },
                          "on-warning-action-dark": {
                            "space": "srgb",
                            "channels": [
                              0.07450980392156863,
                              0.09803921568627451,
                              0.12549019607843137
                            ],
                            "alpha": 1
                          },
                          "outline": {
                            "space": "srgb",
                            "channels": [
                              0.7529411764705882,
                              0.796078431372549,
                              0.8470588235294118
                            ],
                            "alpha": 1
                          },
                          "outline-dark": {
                            "space": "srgb",
                            "channels": [
                              0.22745098039215686,
                              0.29411764705882354,
                              0.37254901960784315
                            ],
                            "alpha": 1
                          },
                          "outline-dark-strong": {
                            "space": "srgb",
                            "channels": [
                              0.6274509803921569,
                              0.6941176470588235,
                              0.7725490196078432
                            ],
                            "alpha": 1
                          },
                          "outline-strong": {
                            "space": "srgb",
                            "channels": [
                              0.22745098039215686,
                              0.29411764705882354,
                              0.37254901960784315
                            ],
                            "alpha": 1
                          },
                          "primary": {
                            "space": "srgb",
                            "channels": [
                              0.12941176470588237,
                              0.4470588235294118,
                              0.6392156862745098
                            ],
                            "alpha": 1
                          },
                          "primary-dark": {
                            "space": "srgb",
                            "channels": [
                              0.23137254901960785,
                              0.807843137254902,
                              0.9686274509803922
                            ],
                            "alpha": 1
                          },
                          "secondary": {
                            "space": "srgb",
                            "channels": [
                              0.29411764705882354,
                              0.49019607843137253,
                              0.10980392156862745
                            ],
                            "alpha": 1
                          },
                          "secondary-dark": {
                            "space": "srgb",
                            "channels": [
                              0.8274509803921568,
                              0.8431372549019608,
                              0.3568627450980392
                            ],
                            "alpha": 1
                          },
                          "success": {
                            "space": "srgb",
                            "channels": [
                              0.01568627450980392,
                              0.47058823529411764,
                              0.3411764705882353
                            ],
                            "alpha": 1
                          },
                          "success-action": {
                            "space": "srgb",
                            "channels": [
                              0.02196078431372549,
                              0.32784313725490194,
                              0.27215686274509804
                            ],
                            "alpha": 1
                          },
                          "success-action-dark": {
                            "space": "srgb",
                            "channels": [
                              0.40941176470588236,
                              0.6823529411764706,
                              0.6047058823529412
                            ],
                            "alpha": 1
                          },
                          "success-text": {
                            "space": "srgb",
                            "channels": [
                              0.029019607843137254,
                              0.16725490196078432,
                              0.19450980392156864
                            ],
                            "alpha": 1
                          },
                          "success-text-dark": {
                            "space": "srgb",
                            "channels": [
                              0.8523529411764705,
                              0.9205882352941176,
                              0.9011764705882352
                            ],
                            "alpha": 1
                          },
                          "surface": {
                            "space": "srgb",
                            "channels": [
                              1,
                              1,
                              1
                            ],
                            "alpha": 1
                          },
                          "surface-alt": {
                            "space": "srgb",
                            "channels": [
                              0.9176470588235294,
                              0.9568627450980393,
                              0.984313725490196
                            ],
                            "alpha": 1
                          },
                          "surface-dark": {
                            "space": "srgb",
                            "channels": [
                              0.07450980392156863,
                              0.09803921568627451,
                              0.12549019607843137
                            ],
                            "alpha": 1
                          },
                          "surface-dark-alt": {
                            "space": "srgb",
                            "channels": [
                              0.14901960784313725,
                              0.2196078431372549,
                              0.2784313725490196
                            ],
                            "alpha": 1
                          },
                          "warning": {
                            "space": "srgb",
                            "channels": [
                              0.9607843137254902,
                              0.6196078431372549,
                              0.043137254901960784
                            ],
                            "alpha": 1
                          },
                          "warning-action": {
                            "space": "srgb",
                            "channels": [
                              0.5890196078431372,
                              0.4172549019607843,
                              0.09333333333333334
                            ],
                            "alpha": 1
                          },
                          "warning-action-dark": {
                            "space": "srgb",
                            "channels": [
                              0.9764705882352941,
                              0.7717647058823529,
                              0.4258823529411765
                            ],
                            "alpha": 1
                          },
                          "warning-text": {
                            "space": "srgb",
                            "channels": [
                              0.17078431372549022,
                              0.1896078431372549,
                              0.14980392156862746
                            ],
                            "alpha": 1
                          },
                          "warning-text-dark": {
                            "space": "srgb",
                            "channels": [
                              0.9941176470588236,
                              0.9429411764705882,
                              0.8564705882352941
                            ],
                            "alpha": 1
                          }
                        },
                        "typography": {
                          "title": {
                            "source": "system",
                            "id": "stack-8a430142f47a470b2f0755a4"
                          },
                          "body": {
                            "source": "system",
                            "id": "stack-58751021b6049b7de349355e"
                          }
                        },
                        "radiusRem": 0.5,
                        "provenance": {
                          "presetKey": "goshtoso",
                          "goshtosoVersion": "catalog:ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b",
                          "catalogRevision": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
                        }
                      }
                    }
                  ],
                  "custom": []
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PresentationInvalid"
          },
          "404": {
            "$ref": "#/components/responses/PresentationMissing"
          },
          "409": {
            "$ref": "#/components/responses/PresentationRejected"
          },
          "503": {
            "$ref": "#/components/responses/PresentationUnavailable"
          }
        },
        "description": "Returns every built-in preset and saved custom snapshot. Catalog revision identifies the installed Goshtoso materialization source; custom snapshots retain their saved literal values across upgrades."
      },
      "post": {
        "operationId": "CreateTheme",
        "tags": [
          "Presentation"
        ],
        "summary": "Create an inactive independent theme",
        "responses": {
          "200": {
            "description": "Original creation payload recognized; the current theme is returned without a second creation or edit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomTheme"
                },
                "example": {
                  "id": "theme:11111111-1111-4111-8111-111111111111",
                  "name": "Ocean",
                  "revision": "1",
                  "definition": {
                    "schemaVersion": 1,
                    "tokens": {
                      "backdrop": {
                        "space": "srgb",
                        "channels": [
                          0,
                          0,
                          0
                        ],
                        "alpha": 1
                      },
                      "backdrop-surface": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "control-outline": {
                        "space": "srgb",
                        "channels": [
                          0.47843137254901963,
                          0.5294117647058824,
                          0.5882352941176471
                        ],
                        "alpha": 1
                      },
                      "control-outline-dark": {
                        "space": "srgb",
                        "channels": [
                          0.44313725490196076,
                          0.5137254901960784,
                          0.592156862745098
                        ],
                        "alpha": 1
                      },
                      "danger": {
                        "space": "srgb",
                        "channels": [
                          0.8627450980392157,
                          0.14901960784313725,
                          0.14901960784313725
                        ],
                        "alpha": 1
                      },
                      "danger-action": {
                        "space": "srgb",
                        "channels": [
                          0.5301960784313725,
                          0.1349019607843137,
                          0.1568627450980392
                        ],
                        "alpha": 1
                      },
                      "danger-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9176470588235295,
                          0.4894117647058824,
                          0.4894117647058824
                        ],
                        "alpha": 1
                      },
                      "danger-text": {
                        "space": "srgb",
                        "channels": [
                          0.15607843137254904,
                          0.11901960784313725,
                          0.16568627450980394
                        ],
                        "alpha": 1
                      },
                      "danger-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9794117647058823,
                          0.8723529411764706,
                          0.8723529411764706
                        ],
                        "alpha": 1
                      },
                      "info": {
                        "space": "srgb",
                        "channels": [
                          0.058823529411764705,
                          0.4627450980392157,
                          0.43137254901960786
                        ],
                        "alpha": 1
                      },
                      "info-action": {
                        "space": "srgb",
                        "channels": [
                          0.04784313725490196,
                          0.32313725490196077,
                          0.3262745098039216
                        ],
                        "alpha": 1
                      },
                      "info-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.43529411764705883,
                          0.6776470588235295,
                          0.6588235294117647
                        ],
                        "alpha": 1
                      },
                      "info-text": {
                        "space": "srgb",
                        "channels": [
                          0.035490196078431374,
                          0.16607843137254902,
                          0.2080392156862745
                        ],
                        "alpha": 1
                      },
                      "info-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8588235294117647,
                          0.9194117647058824,
                          0.9147058823529411
                        ],
                        "alpha": 1
                      },
                      "on-danger": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-danger-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-danger-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-info": {
                        "space": "srgb",
                        "channels": [
                          0.9607843137254902,
                          0.9882352941176471,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-info-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-info-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-primary": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-primary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.023529411764705882,
                          0.08235294117647059,
                          0.11764705882352941
                        ],
                        "alpha": 1
                      },
                      "on-secondary": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-secondary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-success": {
                        "space": "srgb",
                        "channels": [
                          0.9411764705882353,
                          0.9921568627450981,
                          0.9568627450980393
                        ],
                        "alpha": 1
                      },
                      "on-success-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-success-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-surface": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark": {
                        "space": "srgb",
                        "channels": [
                          0.7529411764705882,
                          0.796078431372549,
                          0.8470588235294118
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark-muted": {
                        "space": "srgb",
                        "channels": [
                          0.6511764705882352,
                          0.6913725490196078,
                          0.7388235294117647
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark-strong": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-surface-muted": {
                        "space": "srgb",
                        "channels": [
                          0.3433333333333333,
                          0.4,
                          0.4666666666666667
                        ],
                        "alpha": 1
                      },
                      "on-surface-strong": {
                        "space": "srgb",
                        "channels": [
                          0.03137254901960784,
                          0.11372549019607843,
                          0.16862745098039217
                        ],
                        "alpha": 1
                      },
                      "on-warning": {
                        "space": "srgb",
                        "channels": [
                          0.12941176470588237,
                          0.08627450980392157,
                          0.023529411764705882
                        ],
                        "alpha": 1
                      },
                      "on-warning-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-warning-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "outline": {
                        "space": "srgb",
                        "channels": [
                          0.7529411764705882,
                          0.796078431372549,
                          0.8470588235294118
                        ],
                        "alpha": 1
                      },
                      "outline-dark": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "outline-dark-strong": {
                        "space": "srgb",
                        "channels": [
                          0.6274509803921569,
                          0.6941176470588235,
                          0.7725490196078432
                        ],
                        "alpha": 1
                      },
                      "outline-strong": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "primary": {
                        "space": "srgb",
                        "channels": [
                          0.12941176470588237,
                          0.4470588235294118,
                          0.6392156862745098
                        ],
                        "alpha": 1
                      },
                      "primary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.23137254901960785,
                          0.807843137254902,
                          0.9686274509803922
                        ],
                        "alpha": 1
                      },
                      "secondary": {
                        "space": "srgb",
                        "channels": [
                          0.29411764705882354,
                          0.49019607843137253,
                          0.10980392156862745
                        ],
                        "alpha": 1
                      },
                      "secondary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8274509803921568,
                          0.8431372549019608,
                          0.3568627450980392
                        ],
                        "alpha": 1
                      },
                      "success": {
                        "space": "srgb",
                        "channels": [
                          0.01568627450980392,
                          0.47058823529411764,
                          0.3411764705882353
                        ],
                        "alpha": 1
                      },
                      "success-action": {
                        "space": "srgb",
                        "channels": [
                          0.02196078431372549,
                          0.32784313725490194,
                          0.27215686274509804
                        ],
                        "alpha": 1
                      },
                      "success-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.40941176470588236,
                          0.6823529411764706,
                          0.6047058823529412
                        ],
                        "alpha": 1
                      },
                      "success-text": {
                        "space": "srgb",
                        "channels": [
                          0.029019607843137254,
                          0.16725490196078432,
                          0.19450980392156864
                        ],
                        "alpha": 1
                      },
                      "success-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8523529411764705,
                          0.9205882352941176,
                          0.9011764705882352
                        ],
                        "alpha": 1
                      },
                      "surface": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "surface-alt": {
                        "space": "srgb",
                        "channels": [
                          0.9176470588235294,
                          0.9568627450980393,
                          0.984313725490196
                        ],
                        "alpha": 1
                      },
                      "surface-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "surface-dark-alt": {
                        "space": "srgb",
                        "channels": [
                          0.14901960784313725,
                          0.2196078431372549,
                          0.2784313725490196
                        ],
                        "alpha": 1
                      },
                      "warning": {
                        "space": "srgb",
                        "channels": [
                          0.9607843137254902,
                          0.6196078431372549,
                          0.043137254901960784
                        ],
                        "alpha": 1
                      },
                      "warning-action": {
                        "space": "srgb",
                        "channels": [
                          0.5890196078431372,
                          0.4172549019607843,
                          0.09333333333333334
                        ],
                        "alpha": 1
                      },
                      "warning-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9764705882352941,
                          0.7717647058823529,
                          0.4258823529411765
                        ],
                        "alpha": 1
                      },
                      "warning-text": {
                        "space": "srgb",
                        "channels": [
                          0.17078431372549022,
                          0.1896078431372549,
                          0.14980392156862746
                        ],
                        "alpha": 1
                      },
                      "warning-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9941176470588236,
                          0.9429411764705882,
                          0.8564705882352941
                        ],
                        "alpha": 1
                      }
                    },
                    "typography": {
                      "title": {
                        "source": "system",
                        "id": "stack-8a430142f47a470b2f0755a4"
                      },
                      "body": {
                        "source": "system",
                        "id": "stack-58751021b6049b7de349355e"
                      }
                    },
                    "radiusRem": 0.5,
                    "provenance": {
                      "presetKey": "goshtoso",
                      "goshtosoVersion": "catalog:ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b",
                      "catalogRevision": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
                    }
                  }
                }
              }
            }
          },
          "201": {
            "description": "Inactive theme created at revision 1 under the submitted stable identity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomTheme"
                },
                "example": {
                  "id": "theme:11111111-1111-4111-8111-111111111111",
                  "name": "Ocean",
                  "revision": "1",
                  "definition": {
                    "schemaVersion": 1,
                    "tokens": {
                      "backdrop": {
                        "space": "srgb",
                        "channels": [
                          0,
                          0,
                          0
                        ],
                        "alpha": 1
                      },
                      "backdrop-surface": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "control-outline": {
                        "space": "srgb",
                        "channels": [
                          0.47843137254901963,
                          0.5294117647058824,
                          0.5882352941176471
                        ],
                        "alpha": 1
                      },
                      "control-outline-dark": {
                        "space": "srgb",
                        "channels": [
                          0.44313725490196076,
                          0.5137254901960784,
                          0.592156862745098
                        ],
                        "alpha": 1
                      },
                      "danger": {
                        "space": "srgb",
                        "channels": [
                          0.8627450980392157,
                          0.14901960784313725,
                          0.14901960784313725
                        ],
                        "alpha": 1
                      },
                      "danger-action": {
                        "space": "srgb",
                        "channels": [
                          0.5301960784313725,
                          0.1349019607843137,
                          0.1568627450980392
                        ],
                        "alpha": 1
                      },
                      "danger-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9176470588235295,
                          0.4894117647058824,
                          0.4894117647058824
                        ],
                        "alpha": 1
                      },
                      "danger-text": {
                        "space": "srgb",
                        "channels": [
                          0.15607843137254904,
                          0.11901960784313725,
                          0.16568627450980394
                        ],
                        "alpha": 1
                      },
                      "danger-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9794117647058823,
                          0.8723529411764706,
                          0.8723529411764706
                        ],
                        "alpha": 1
                      },
                      "info": {
                        "space": "srgb",
                        "channels": [
                          0.058823529411764705,
                          0.4627450980392157,
                          0.43137254901960786
                        ],
                        "alpha": 1
                      },
                      "info-action": {
                        "space": "srgb",
                        "channels": [
                          0.04784313725490196,
                          0.32313725490196077,
                          0.3262745098039216
                        ],
                        "alpha": 1
                      },
                      "info-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.43529411764705883,
                          0.6776470588235295,
                          0.6588235294117647
                        ],
                        "alpha": 1
                      },
                      "info-text": {
                        "space": "srgb",
                        "channels": [
                          0.035490196078431374,
                          0.16607843137254902,
                          0.2080392156862745
                        ],
                        "alpha": 1
                      },
                      "info-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8588235294117647,
                          0.9194117647058824,
                          0.9147058823529411
                        ],
                        "alpha": 1
                      },
                      "on-danger": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-danger-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-danger-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-info": {
                        "space": "srgb",
                        "channels": [
                          0.9607843137254902,
                          0.9882352941176471,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-info-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-info-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-primary": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-primary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.023529411764705882,
                          0.08235294117647059,
                          0.11764705882352941
                        ],
                        "alpha": 1
                      },
                      "on-secondary": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-secondary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-success": {
                        "space": "srgb",
                        "channels": [
                          0.9411764705882353,
                          0.9921568627450981,
                          0.9568627450980393
                        ],
                        "alpha": 1
                      },
                      "on-success-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-success-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-surface": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark": {
                        "space": "srgb",
                        "channels": [
                          0.7529411764705882,
                          0.796078431372549,
                          0.8470588235294118
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark-muted": {
                        "space": "srgb",
                        "channels": [
                          0.6511764705882352,
                          0.6913725490196078,
                          0.7388235294117647
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark-strong": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-surface-muted": {
                        "space": "srgb",
                        "channels": [
                          0.3433333333333333,
                          0.4,
                          0.4666666666666667
                        ],
                        "alpha": 1
                      },
                      "on-surface-strong": {
                        "space": "srgb",
                        "channels": [
                          0.03137254901960784,
                          0.11372549019607843,
                          0.16862745098039217
                        ],
                        "alpha": 1
                      },
                      "on-warning": {
                        "space": "srgb",
                        "channels": [
                          0.12941176470588237,
                          0.08627450980392157,
                          0.023529411764705882
                        ],
                        "alpha": 1
                      },
                      "on-warning-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-warning-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "outline": {
                        "space": "srgb",
                        "channels": [
                          0.7529411764705882,
                          0.796078431372549,
                          0.8470588235294118
                        ],
                        "alpha": 1
                      },
                      "outline-dark": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "outline-dark-strong": {
                        "space": "srgb",
                        "channels": [
                          0.6274509803921569,
                          0.6941176470588235,
                          0.7725490196078432
                        ],
                        "alpha": 1
                      },
                      "outline-strong": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "primary": {
                        "space": "srgb",
                        "channels": [
                          0.12941176470588237,
                          0.4470588235294118,
                          0.6392156862745098
                        ],
                        "alpha": 1
                      },
                      "primary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.23137254901960785,
                          0.807843137254902,
                          0.9686274509803922
                        ],
                        "alpha": 1
                      },
                      "secondary": {
                        "space": "srgb",
                        "channels": [
                          0.29411764705882354,
                          0.49019607843137253,
                          0.10980392156862745
                        ],
                        "alpha": 1
                      },
                      "secondary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8274509803921568,
                          0.8431372549019608,
                          0.3568627450980392
                        ],
                        "alpha": 1
                      },
                      "success": {
                        "space": "srgb",
                        "channels": [
                          0.01568627450980392,
                          0.47058823529411764,
                          0.3411764705882353
                        ],
                        "alpha": 1
                      },
                      "success-action": {
                        "space": "srgb",
                        "channels": [
                          0.02196078431372549,
                          0.32784313725490194,
                          0.27215686274509804
                        ],
                        "alpha": 1
                      },
                      "success-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.40941176470588236,
                          0.6823529411764706,
                          0.6047058823529412
                        ],
                        "alpha": 1
                      },
                      "success-text": {
                        "space": "srgb",
                        "channels": [
                          0.029019607843137254,
                          0.16725490196078432,
                          0.19450980392156864
                        ],
                        "alpha": 1
                      },
                      "success-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8523529411764705,
                          0.9205882352941176,
                          0.9011764705882352
                        ],
                        "alpha": 1
                      },
                      "surface": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "surface-alt": {
                        "space": "srgb",
                        "channels": [
                          0.9176470588235294,
                          0.9568627450980393,
                          0.984313725490196
                        ],
                        "alpha": 1
                      },
                      "surface-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "surface-dark-alt": {
                        "space": "srgb",
                        "channels": [
                          0.14901960784313725,
                          0.2196078431372549,
                          0.2784313725490196
                        ],
                        "alpha": 1
                      },
                      "warning": {
                        "space": "srgb",
                        "channels": [
                          0.9607843137254902,
                          0.6196078431372549,
                          0.043137254901960784
                        ],
                        "alpha": 1
                      },
                      "warning-action": {
                        "space": "srgb",
                        "channels": [
                          0.5890196078431372,
                          0.4172549019607843,
                          0.09333333333333334
                        ],
                        "alpha": 1
                      },
                      "warning-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9764705882352941,
                          0.7717647058823529,
                          0.4258823529411765
                        ],
                        "alpha": 1
                      },
                      "warning-text": {
                        "space": "srgb",
                        "channels": [
                          0.17078431372549022,
                          0.1896078431372549,
                          0.14980392156862746
                        ],
                        "alpha": 1
                      },
                      "warning-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9941176470588236,
                          0.9429411764705882,
                          0.8564705882352941
                        ],
                        "alpha": 1
                      }
                    },
                    "typography": {
                      "title": {
                        "source": "system",
                        "id": "stack-8a430142f47a470b2f0755a4"
                      },
                      "body": {
                        "source": "system",
                        "id": "stack-58751021b6049b7de349355e"
                      }
                    },
                    "radiusRem": 0.5,
                    "provenance": {
                      "presetKey": "goshtoso",
                      "goshtosoVersion": "catalog:ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b",
                      "catalogRevision": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PresentationInvalid"
          },
          "404": {
            "$ref": "#/components/responses/PresentationMissing"
          },
          "409": {
            "$ref": "#/components/responses/PresentationRejected"
          },
          "503": {
            "$ref": "#/components/responses/PresentationUnavailable"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ThemeCreate"
              },
              "example": {
                "id": "theme:11111111-1111-4111-8111-111111111111",
                "name": "Ocean",
                "definition": {
                  "schemaVersion": 1,
                  "tokens": {
                    "backdrop": {
                      "space": "srgb",
                      "channels": [
                        0,
                        0,
                        0
                      ],
                      "alpha": 1
                    },
                    "backdrop-surface": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "control-outline": {
                      "space": "srgb",
                      "channels": [
                        0.47843137254901963,
                        0.5294117647058824,
                        0.5882352941176471
                      ],
                      "alpha": 1
                    },
                    "control-outline-dark": {
                      "space": "srgb",
                      "channels": [
                        0.44313725490196076,
                        0.5137254901960784,
                        0.592156862745098
                      ],
                      "alpha": 1
                    },
                    "danger": {
                      "space": "srgb",
                      "channels": [
                        0.8627450980392157,
                        0.14901960784313725,
                        0.14901960784313725
                      ],
                      "alpha": 1
                    },
                    "danger-action": {
                      "space": "srgb",
                      "channels": [
                        0.5301960784313725,
                        0.1349019607843137,
                        0.1568627450980392
                      ],
                      "alpha": 1
                    },
                    "danger-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.9176470588235295,
                        0.4894117647058824,
                        0.4894117647058824
                      ],
                      "alpha": 1
                    },
                    "danger-text": {
                      "space": "srgb",
                      "channels": [
                        0.15607843137254904,
                        0.11901960784313725,
                        0.16568627450980394
                      ],
                      "alpha": 1
                    },
                    "danger-text-dark": {
                      "space": "srgb",
                      "channels": [
                        0.9794117647058823,
                        0.8723529411764706,
                        0.8723529411764706
                      ],
                      "alpha": 1
                    },
                    "info": {
                      "space": "srgb",
                      "channels": [
                        0.058823529411764705,
                        0.4627450980392157,
                        0.43137254901960786
                      ],
                      "alpha": 1
                    },
                    "info-action": {
                      "space": "srgb",
                      "channels": [
                        0.04784313725490196,
                        0.32313725490196077,
                        0.3262745098039216
                      ],
                      "alpha": 1
                    },
                    "info-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.43529411764705883,
                        0.6776470588235295,
                        0.6588235294117647
                      ],
                      "alpha": 1
                    },
                    "info-text": {
                      "space": "srgb",
                      "channels": [
                        0.035490196078431374,
                        0.16607843137254902,
                        0.2080392156862745
                      ],
                      "alpha": 1
                    },
                    "info-text-dark": {
                      "space": "srgb",
                      "channels": [
                        0.8588235294117647,
                        0.9194117647058824,
                        0.9147058823529411
                      ],
                      "alpha": 1
                    },
                    "on-danger": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-danger-action": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-danger-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "on-info": {
                      "space": "srgb",
                      "channels": [
                        0.9607843137254902,
                        0.9882352941176471,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-info-action": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-info-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "on-primary": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-primary-dark": {
                      "space": "srgb",
                      "channels": [
                        0.023529411764705882,
                        0.08235294117647059,
                        0.11764705882352941
                      ],
                      "alpha": 1
                    },
                    "on-secondary": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-secondary-dark": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "on-success": {
                      "space": "srgb",
                      "channels": [
                        0.9411764705882353,
                        0.9921568627450981,
                        0.9568627450980393
                      ],
                      "alpha": 1
                    },
                    "on-success-action": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-success-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "on-surface": {
                      "space": "srgb",
                      "channels": [
                        0.22745098039215686,
                        0.29411764705882354,
                        0.37254901960784315
                      ],
                      "alpha": 1
                    },
                    "on-surface-dark": {
                      "space": "srgb",
                      "channels": [
                        0.7529411764705882,
                        0.796078431372549,
                        0.8470588235294118
                      ],
                      "alpha": 1
                    },
                    "on-surface-dark-muted": {
                      "space": "srgb",
                      "channels": [
                        0.6511764705882352,
                        0.6913725490196078,
                        0.7388235294117647
                      ],
                      "alpha": 1
                    },
                    "on-surface-dark-strong": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-surface-muted": {
                      "space": "srgb",
                      "channels": [
                        0.3433333333333333,
                        0.4,
                        0.4666666666666667
                      ],
                      "alpha": 1
                    },
                    "on-surface-strong": {
                      "space": "srgb",
                      "channels": [
                        0.03137254901960784,
                        0.11372549019607843,
                        0.16862745098039217
                      ],
                      "alpha": 1
                    },
                    "on-warning": {
                      "space": "srgb",
                      "channels": [
                        0.12941176470588237,
                        0.08627450980392157,
                        0.023529411764705882
                      ],
                      "alpha": 1
                    },
                    "on-warning-action": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-warning-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "outline": {
                      "space": "srgb",
                      "channels": [
                        0.7529411764705882,
                        0.796078431372549,
                        0.8470588235294118
                      ],
                      "alpha": 1
                    },
                    "outline-dark": {
                      "space": "srgb",
                      "channels": [
                        0.22745098039215686,
                        0.29411764705882354,
                        0.37254901960784315
                      ],
                      "alpha": 1
                    },
                    "outline-dark-strong": {
                      "space": "srgb",
                      "channels": [
                        0.6274509803921569,
                        0.6941176470588235,
                        0.7725490196078432
                      ],
                      "alpha": 1
                    },
                    "outline-strong": {
                      "space": "srgb",
                      "channels": [
                        0.22745098039215686,
                        0.29411764705882354,
                        0.37254901960784315
                      ],
                      "alpha": 1
                    },
                    "primary": {
                      "space": "srgb",
                      "channels": [
                        0.12941176470588237,
                        0.4470588235294118,
                        0.6392156862745098
                      ],
                      "alpha": 1
                    },
                    "primary-dark": {
                      "space": "srgb",
                      "channels": [
                        0.23137254901960785,
                        0.807843137254902,
                        0.9686274509803922
                      ],
                      "alpha": 1
                    },
                    "secondary": {
                      "space": "srgb",
                      "channels": [
                        0.29411764705882354,
                        0.49019607843137253,
                        0.10980392156862745
                      ],
                      "alpha": 1
                    },
                    "secondary-dark": {
                      "space": "srgb",
                      "channels": [
                        0.8274509803921568,
                        0.8431372549019608,
                        0.3568627450980392
                      ],
                      "alpha": 1
                    },
                    "success": {
                      "space": "srgb",
                      "channels": [
                        0.01568627450980392,
                        0.47058823529411764,
                        0.3411764705882353
                      ],
                      "alpha": 1
                    },
                    "success-action": {
                      "space": "srgb",
                      "channels": [
                        0.02196078431372549,
                        0.32784313725490194,
                        0.27215686274509804
                      ],
                      "alpha": 1
                    },
                    "success-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.40941176470588236,
                        0.6823529411764706,
                        0.6047058823529412
                      ],
                      "alpha": 1
                    },
                    "success-text": {
                      "space": "srgb",
                      "channels": [
                        0.029019607843137254,
                        0.16725490196078432,
                        0.19450980392156864
                      ],
                      "alpha": 1
                    },
                    "success-text-dark": {
                      "space": "srgb",
                      "channels": [
                        0.8523529411764705,
                        0.9205882352941176,
                        0.9011764705882352
                      ],
                      "alpha": 1
                    },
                    "surface": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "surface-alt": {
                      "space": "srgb",
                      "channels": [
                        0.9176470588235294,
                        0.9568627450980393,
                        0.984313725490196
                      ],
                      "alpha": 1
                    },
                    "surface-dark": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "surface-dark-alt": {
                      "space": "srgb",
                      "channels": [
                        0.14901960784313725,
                        0.2196078431372549,
                        0.2784313725490196
                      ],
                      "alpha": 1
                    },
                    "warning": {
                      "space": "srgb",
                      "channels": [
                        0.9607843137254902,
                        0.6196078431372549,
                        0.043137254901960784
                      ],
                      "alpha": 1
                    },
                    "warning-action": {
                      "space": "srgb",
                      "channels": [
                        0.5890196078431372,
                        0.4172549019607843,
                        0.09333333333333334
                      ],
                      "alpha": 1
                    },
                    "warning-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.9764705882352941,
                        0.7717647058823529,
                        0.4258823529411765
                      ],
                      "alpha": 1
                    },
                    "warning-text": {
                      "space": "srgb",
                      "channels": [
                        0.17078431372549022,
                        0.1896078431372549,
                        0.14980392156862746
                      ],
                      "alpha": 1
                    },
                    "warning-text-dark": {
                      "space": "srgb",
                      "channels": [
                        0.9941176470588236,
                        0.9429411764705882,
                        0.8564705882352941
                      ],
                      "alpha": 1
                    }
                  },
                  "typography": {
                    "title": {
                      "source": "system",
                      "id": "stack-8a430142f47a470b2f0755a4"
                    },
                    "body": {
                      "source": "system",
                      "id": "stack-58751021b6049b7de349355e"
                    }
                  },
                  "radiusRem": 0.5,
                  "provenance": {
                    "presetKey": "goshtoso",
                    "goshtosoVersion": "catalog:ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b",
                    "catalogRevision": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
                  }
                }
              }
            }
          },
          "description": "New inactive complete definition or a copyFrom command tied to the source revision."
        },
        "description": "Creates an inactive independent snapshot from definition or copyFrom, never both. Uses the client theme:UUID. An exact creation replay returns 200, while a conflicting ID returns 409. Saving presentation is required to activate the new theme."
      }
    },
    "/api/v1/themes/{themeID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/PresentationThemeID"
        }
      ],
      "get": {
        "operationId": "GetTheme",
        "tags": [
          "Presentation"
        ],
        "summary": "Read a custom theme",
        "responses": {
          "200": {
            "description": "Saved definition and current revision for the requested custom theme.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomTheme"
                },
                "example": {
                  "id": "theme:11111111-1111-4111-8111-111111111111",
                  "name": "Ocean",
                  "revision": "1",
                  "definition": {
                    "schemaVersion": 1,
                    "tokens": {
                      "backdrop": {
                        "space": "srgb",
                        "channels": [
                          0,
                          0,
                          0
                        ],
                        "alpha": 1
                      },
                      "backdrop-surface": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "control-outline": {
                        "space": "srgb",
                        "channels": [
                          0.47843137254901963,
                          0.5294117647058824,
                          0.5882352941176471
                        ],
                        "alpha": 1
                      },
                      "control-outline-dark": {
                        "space": "srgb",
                        "channels": [
                          0.44313725490196076,
                          0.5137254901960784,
                          0.592156862745098
                        ],
                        "alpha": 1
                      },
                      "danger": {
                        "space": "srgb",
                        "channels": [
                          0.8627450980392157,
                          0.14901960784313725,
                          0.14901960784313725
                        ],
                        "alpha": 1
                      },
                      "danger-action": {
                        "space": "srgb",
                        "channels": [
                          0.5301960784313725,
                          0.1349019607843137,
                          0.1568627450980392
                        ],
                        "alpha": 1
                      },
                      "danger-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9176470588235295,
                          0.4894117647058824,
                          0.4894117647058824
                        ],
                        "alpha": 1
                      },
                      "danger-text": {
                        "space": "srgb",
                        "channels": [
                          0.15607843137254904,
                          0.11901960784313725,
                          0.16568627450980394
                        ],
                        "alpha": 1
                      },
                      "danger-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9794117647058823,
                          0.8723529411764706,
                          0.8723529411764706
                        ],
                        "alpha": 1
                      },
                      "info": {
                        "space": "srgb",
                        "channels": [
                          0.058823529411764705,
                          0.4627450980392157,
                          0.43137254901960786
                        ],
                        "alpha": 1
                      },
                      "info-action": {
                        "space": "srgb",
                        "channels": [
                          0.04784313725490196,
                          0.32313725490196077,
                          0.3262745098039216
                        ],
                        "alpha": 1
                      },
                      "info-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.43529411764705883,
                          0.6776470588235295,
                          0.6588235294117647
                        ],
                        "alpha": 1
                      },
                      "info-text": {
                        "space": "srgb",
                        "channels": [
                          0.035490196078431374,
                          0.16607843137254902,
                          0.2080392156862745
                        ],
                        "alpha": 1
                      },
                      "info-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8588235294117647,
                          0.9194117647058824,
                          0.9147058823529411
                        ],
                        "alpha": 1
                      },
                      "on-danger": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-danger-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-danger-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-info": {
                        "space": "srgb",
                        "channels": [
                          0.9607843137254902,
                          0.9882352941176471,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-info-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-info-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-primary": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-primary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.023529411764705882,
                          0.08235294117647059,
                          0.11764705882352941
                        ],
                        "alpha": 1
                      },
                      "on-secondary": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-secondary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-success": {
                        "space": "srgb",
                        "channels": [
                          0.9411764705882353,
                          0.9921568627450981,
                          0.9568627450980393
                        ],
                        "alpha": 1
                      },
                      "on-success-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-success-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-surface": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark": {
                        "space": "srgb",
                        "channels": [
                          0.7529411764705882,
                          0.796078431372549,
                          0.8470588235294118
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark-muted": {
                        "space": "srgb",
                        "channels": [
                          0.6511764705882352,
                          0.6913725490196078,
                          0.7388235294117647
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark-strong": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-surface-muted": {
                        "space": "srgb",
                        "channels": [
                          0.3433333333333333,
                          0.4,
                          0.4666666666666667
                        ],
                        "alpha": 1
                      },
                      "on-surface-strong": {
                        "space": "srgb",
                        "channels": [
                          0.03137254901960784,
                          0.11372549019607843,
                          0.16862745098039217
                        ],
                        "alpha": 1
                      },
                      "on-warning": {
                        "space": "srgb",
                        "channels": [
                          0.12941176470588237,
                          0.08627450980392157,
                          0.023529411764705882
                        ],
                        "alpha": 1
                      },
                      "on-warning-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-warning-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "outline": {
                        "space": "srgb",
                        "channels": [
                          0.7529411764705882,
                          0.796078431372549,
                          0.8470588235294118
                        ],
                        "alpha": 1
                      },
                      "outline-dark": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "outline-dark-strong": {
                        "space": "srgb",
                        "channels": [
                          0.6274509803921569,
                          0.6941176470588235,
                          0.7725490196078432
                        ],
                        "alpha": 1
                      },
                      "outline-strong": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "primary": {
                        "space": "srgb",
                        "channels": [
                          0.12941176470588237,
                          0.4470588235294118,
                          0.6392156862745098
                        ],
                        "alpha": 1
                      },
                      "primary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.23137254901960785,
                          0.807843137254902,
                          0.9686274509803922
                        ],
                        "alpha": 1
                      },
                      "secondary": {
                        "space": "srgb",
                        "channels": [
                          0.29411764705882354,
                          0.49019607843137253,
                          0.10980392156862745
                        ],
                        "alpha": 1
                      },
                      "secondary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8274509803921568,
                          0.8431372549019608,
                          0.3568627450980392
                        ],
                        "alpha": 1
                      },
                      "success": {
                        "space": "srgb",
                        "channels": [
                          0.01568627450980392,
                          0.47058823529411764,
                          0.3411764705882353
                        ],
                        "alpha": 1
                      },
                      "success-action": {
                        "space": "srgb",
                        "channels": [
                          0.02196078431372549,
                          0.32784313725490194,
                          0.27215686274509804
                        ],
                        "alpha": 1
                      },
                      "success-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.40941176470588236,
                          0.6823529411764706,
                          0.6047058823529412
                        ],
                        "alpha": 1
                      },
                      "success-text": {
                        "space": "srgb",
                        "channels": [
                          0.029019607843137254,
                          0.16725490196078432,
                          0.19450980392156864
                        ],
                        "alpha": 1
                      },
                      "success-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8523529411764705,
                          0.9205882352941176,
                          0.9011764705882352
                        ],
                        "alpha": 1
                      },
                      "surface": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "surface-alt": {
                        "space": "srgb",
                        "channels": [
                          0.9176470588235294,
                          0.9568627450980393,
                          0.984313725490196
                        ],
                        "alpha": 1
                      },
                      "surface-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "surface-dark-alt": {
                        "space": "srgb",
                        "channels": [
                          0.14901960784313725,
                          0.2196078431372549,
                          0.2784313725490196
                        ],
                        "alpha": 1
                      },
                      "warning": {
                        "space": "srgb",
                        "channels": [
                          0.9607843137254902,
                          0.6196078431372549,
                          0.043137254901960784
                        ],
                        "alpha": 1
                      },
                      "warning-action": {
                        "space": "srgb",
                        "channels": [
                          0.5890196078431372,
                          0.4172549019607843,
                          0.09333333333333334
                        ],
                        "alpha": 1
                      },
                      "warning-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9764705882352941,
                          0.7717647058823529,
                          0.4258823529411765
                        ],
                        "alpha": 1
                      },
                      "warning-text": {
                        "space": "srgb",
                        "channels": [
                          0.17078431372549022,
                          0.1896078431372549,
                          0.14980392156862746
                        ],
                        "alpha": 1
                      },
                      "warning-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9941176470588236,
                          0.9429411764705882,
                          0.8564705882352941
                        ],
                        "alpha": 1
                      }
                    },
                    "typography": {
                      "title": {
                        "source": "system",
                        "id": "stack-8a430142f47a470b2f0755a4"
                      },
                      "body": {
                        "source": "system",
                        "id": "stack-58751021b6049b7de349355e"
                      }
                    },
                    "radiusRem": 0.5,
                    "provenance": {
                      "presetKey": "goshtoso",
                      "goshtosoVersion": "catalog:ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b",
                      "catalogRevision": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PresentationInvalid"
          },
          "404": {
            "$ref": "#/components/responses/PresentationMissing"
          },
          "409": {
            "$ref": "#/components/responses/PresentationRejected"
          },
          "503": {
            "$ref": "#/components/responses/PresentationUnavailable"
          }
        },
        "description": "Reads the saved custom definition and its current decimal revision. Built-in keys are enumerated by ListThemes and are not custom IDs."
      },
      "patch": {
        "operationId": "RenameTheme",
        "tags": [
          "Presentation"
        ],
        "summary": "Rename a theme without changing active selection",
        "responses": {
          "200": {
            "description": "Display name changed and theme revision incremented. Global selection and definition retained.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomTheme"
                },
                "example": {
                  "id": "theme:11111111-1111-4111-8111-111111111111",
                  "name": "Ocean",
                  "revision": "1",
                  "definition": {
                    "schemaVersion": 1,
                    "tokens": {
                      "backdrop": {
                        "space": "srgb",
                        "channels": [
                          0,
                          0,
                          0
                        ],
                        "alpha": 1
                      },
                      "backdrop-surface": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "control-outline": {
                        "space": "srgb",
                        "channels": [
                          0.47843137254901963,
                          0.5294117647058824,
                          0.5882352941176471
                        ],
                        "alpha": 1
                      },
                      "control-outline-dark": {
                        "space": "srgb",
                        "channels": [
                          0.44313725490196076,
                          0.5137254901960784,
                          0.592156862745098
                        ],
                        "alpha": 1
                      },
                      "danger": {
                        "space": "srgb",
                        "channels": [
                          0.8627450980392157,
                          0.14901960784313725,
                          0.14901960784313725
                        ],
                        "alpha": 1
                      },
                      "danger-action": {
                        "space": "srgb",
                        "channels": [
                          0.5301960784313725,
                          0.1349019607843137,
                          0.1568627450980392
                        ],
                        "alpha": 1
                      },
                      "danger-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9176470588235295,
                          0.4894117647058824,
                          0.4894117647058824
                        ],
                        "alpha": 1
                      },
                      "danger-text": {
                        "space": "srgb",
                        "channels": [
                          0.15607843137254904,
                          0.11901960784313725,
                          0.16568627450980394
                        ],
                        "alpha": 1
                      },
                      "danger-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9794117647058823,
                          0.8723529411764706,
                          0.8723529411764706
                        ],
                        "alpha": 1
                      },
                      "info": {
                        "space": "srgb",
                        "channels": [
                          0.058823529411764705,
                          0.4627450980392157,
                          0.43137254901960786
                        ],
                        "alpha": 1
                      },
                      "info-action": {
                        "space": "srgb",
                        "channels": [
                          0.04784313725490196,
                          0.32313725490196077,
                          0.3262745098039216
                        ],
                        "alpha": 1
                      },
                      "info-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.43529411764705883,
                          0.6776470588235295,
                          0.6588235294117647
                        ],
                        "alpha": 1
                      },
                      "info-text": {
                        "space": "srgb",
                        "channels": [
                          0.035490196078431374,
                          0.16607843137254902,
                          0.2080392156862745
                        ],
                        "alpha": 1
                      },
                      "info-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8588235294117647,
                          0.9194117647058824,
                          0.9147058823529411
                        ],
                        "alpha": 1
                      },
                      "on-danger": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-danger-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-danger-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-info": {
                        "space": "srgb",
                        "channels": [
                          0.9607843137254902,
                          0.9882352941176471,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-info-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-info-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-primary": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-primary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.023529411764705882,
                          0.08235294117647059,
                          0.11764705882352941
                        ],
                        "alpha": 1
                      },
                      "on-secondary": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-secondary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-success": {
                        "space": "srgb",
                        "channels": [
                          0.9411764705882353,
                          0.9921568627450981,
                          0.9568627450980393
                        ],
                        "alpha": 1
                      },
                      "on-success-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-success-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "on-surface": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark": {
                        "space": "srgb",
                        "channels": [
                          0.7529411764705882,
                          0.796078431372549,
                          0.8470588235294118
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark-muted": {
                        "space": "srgb",
                        "channels": [
                          0.6511764705882352,
                          0.6913725490196078,
                          0.7388235294117647
                        ],
                        "alpha": 1
                      },
                      "on-surface-dark-strong": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-surface-muted": {
                        "space": "srgb",
                        "channels": [
                          0.3433333333333333,
                          0.4,
                          0.4666666666666667
                        ],
                        "alpha": 1
                      },
                      "on-surface-strong": {
                        "space": "srgb",
                        "channels": [
                          0.03137254901960784,
                          0.11372549019607843,
                          0.16862745098039217
                        ],
                        "alpha": 1
                      },
                      "on-warning": {
                        "space": "srgb",
                        "channels": [
                          0.12941176470588237,
                          0.08627450980392157,
                          0.023529411764705882
                        ],
                        "alpha": 1
                      },
                      "on-warning-action": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "on-warning-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "outline": {
                        "space": "srgb",
                        "channels": [
                          0.7529411764705882,
                          0.796078431372549,
                          0.8470588235294118
                        ],
                        "alpha": 1
                      },
                      "outline-dark": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "outline-dark-strong": {
                        "space": "srgb",
                        "channels": [
                          0.6274509803921569,
                          0.6941176470588235,
                          0.7725490196078432
                        ],
                        "alpha": 1
                      },
                      "outline-strong": {
                        "space": "srgb",
                        "channels": [
                          0.22745098039215686,
                          0.29411764705882354,
                          0.37254901960784315
                        ],
                        "alpha": 1
                      },
                      "primary": {
                        "space": "srgb",
                        "channels": [
                          0.12941176470588237,
                          0.4470588235294118,
                          0.6392156862745098
                        ],
                        "alpha": 1
                      },
                      "primary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.23137254901960785,
                          0.807843137254902,
                          0.9686274509803922
                        ],
                        "alpha": 1
                      },
                      "secondary": {
                        "space": "srgb",
                        "channels": [
                          0.29411764705882354,
                          0.49019607843137253,
                          0.10980392156862745
                        ],
                        "alpha": 1
                      },
                      "secondary-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8274509803921568,
                          0.8431372549019608,
                          0.3568627450980392
                        ],
                        "alpha": 1
                      },
                      "success": {
                        "space": "srgb",
                        "channels": [
                          0.01568627450980392,
                          0.47058823529411764,
                          0.3411764705882353
                        ],
                        "alpha": 1
                      },
                      "success-action": {
                        "space": "srgb",
                        "channels": [
                          0.02196078431372549,
                          0.32784313725490194,
                          0.27215686274509804
                        ],
                        "alpha": 1
                      },
                      "success-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.40941176470588236,
                          0.6823529411764706,
                          0.6047058823529412
                        ],
                        "alpha": 1
                      },
                      "success-text": {
                        "space": "srgb",
                        "channels": [
                          0.029019607843137254,
                          0.16725490196078432,
                          0.19450980392156864
                        ],
                        "alpha": 1
                      },
                      "success-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.8523529411764705,
                          0.9205882352941176,
                          0.9011764705882352
                        ],
                        "alpha": 1
                      },
                      "surface": {
                        "space": "srgb",
                        "channels": [
                          1,
                          1,
                          1
                        ],
                        "alpha": 1
                      },
                      "surface-alt": {
                        "space": "srgb",
                        "channels": [
                          0.9176470588235294,
                          0.9568627450980393,
                          0.984313725490196
                        ],
                        "alpha": 1
                      },
                      "surface-dark": {
                        "space": "srgb",
                        "channels": [
                          0.07450980392156863,
                          0.09803921568627451,
                          0.12549019607843137
                        ],
                        "alpha": 1
                      },
                      "surface-dark-alt": {
                        "space": "srgb",
                        "channels": [
                          0.14901960784313725,
                          0.2196078431372549,
                          0.2784313725490196
                        ],
                        "alpha": 1
                      },
                      "warning": {
                        "space": "srgb",
                        "channels": [
                          0.9607843137254902,
                          0.6196078431372549,
                          0.043137254901960784
                        ],
                        "alpha": 1
                      },
                      "warning-action": {
                        "space": "srgb",
                        "channels": [
                          0.5890196078431372,
                          0.4172549019607843,
                          0.09333333333333334
                        ],
                        "alpha": 1
                      },
                      "warning-action-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9764705882352941,
                          0.7717647058823529,
                          0.4258823529411765
                        ],
                        "alpha": 1
                      },
                      "warning-text": {
                        "space": "srgb",
                        "channels": [
                          0.17078431372549022,
                          0.1896078431372549,
                          0.14980392156862746
                        ],
                        "alpha": 1
                      },
                      "warning-text-dark": {
                        "space": "srgb",
                        "channels": [
                          0.9941176470588236,
                          0.9429411764705882,
                          0.8564705882352941
                        ],
                        "alpha": 1
                      }
                    },
                    "typography": {
                      "title": {
                        "source": "system",
                        "id": "stack-8a430142f47a470b2f0755a4"
                      },
                      "body": {
                        "source": "system",
                        "id": "stack-58751021b6049b7de349355e"
                      }
                    },
                    "radiusRem": 0.5,
                    "provenance": {
                      "presetKey": "goshtoso",
                      "goshtosoVersion": "catalog:ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b",
                      "catalogRevision": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PresentationInvalid"
          },
          "404": {
            "$ref": "#/components/responses/PresentationMissing"
          },
          "409": {
            "$ref": "#/components/responses/PresentationRejected"
          },
          "503": {
            "$ref": "#/components/responses/PresentationUnavailable"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ThemeRename"
              },
              "example": {
                "name": "Ocean renamed",
                "expectedRevision": "1"
              }
            }
          },
          "description": "New trimmed display name and the current expected theme revision."
        },
        "description": "Checks expectedRevision and changes only the trimmed display name. Increments the theme revision without changing global selection or font references. Stale requests return 409."
      },
      "delete": {
        "operationId": "DeleteTheme",
        "tags": [
          "Presentation"
        ],
        "summary": "Delete an inactive theme",
        "responses": {
          "204": {
            "description": "Inactive theme and its reference rows removed. Uploaded files preserved."
          },
          "400": {
            "$ref": "#/components/responses/PresentationInvalid"
          },
          "404": {
            "$ref": "#/components/responses/PresentationMissing"
          },
          "409": {
            "$ref": "#/components/responses/PresentationRejected"
          },
          "503": {
            "$ref": "#/components/responses/PresentationUnavailable"
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/PresentationExpectedRevision"
          }
        ],
        "description": "Checks expectedRevision and rejects the active custom theme with 409 in_use. Deleting an inactive theme removes its reference rows without deleting font files or selecting a fallback."
      }
    },
    "/api/v1/fonts": {
      "get": {
        "operationId": "ListFonts",
        "tags": [
          "Presentation"
        ],
        "summary": "List uploaded font metadata without file bytes",
        "responses": {
          "200": {
            "description": "Uploaded file metadata and current referencing themes. File bytes are omitted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UploadedFont"
                  }
                },
                "example": [
                  {
                    "id": "font:11111111-1111-4111-8111-111111111111",
                    "name": "Go Regular",
                    "family": "Go",
                    "weight": "400",
                    "style": "normal",
                    "variable": false,
                    "format": "truetype",
                    "mime": "font/ttf",
                    "byteLength": 148672,
                    "digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                    "revision": "1",
                    "usedBy": []
                  }
                ]
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PresentationInvalid"
          },
          "404": {
            "$ref": "#/components/responses/PresentationMissing"
          },
          "409": {
            "$ref": "#/components/responses/PresentationRejected"
          },
          "503": {
            "$ref": "#/components/responses/PresentationUnavailable"
          }
        },
        "description": "Returns uploaded file metadata and saved-theme references, without BLOBs. Empty uploads return an empty array. System, Google and packaged choices belong to the public Goshtoso catalog."
      },
      "post": {
        "operationId": "UploadFont",
        "tags": [
          "Presentation"
        ],
        "summary": "Upload a new immutable font reference",
        "responses": {
          "200": {
            "description": "Exact immutable upload replay recognized. Existing bytes and metadata retained.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadedFont"
                },
                "example": {
                  "id": "font:11111111-1111-4111-8111-111111111111",
                  "name": "Go Regular",
                  "family": "Go",
                  "weight": "400",
                  "style": "normal",
                  "variable": false,
                  "format": "truetype",
                  "mime": "font/ttf",
                  "byteLength": 148672,
                  "digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                  "revision": "1",
                  "usedBy": []
                }
              }
            }
          },
          "201": {
            "description": "Validated original file and derived metadata committed under a new font identity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadedFont"
                },
                "example": {
                  "id": "font:11111111-1111-4111-8111-111111111111",
                  "name": "Go Regular",
                  "family": "Go",
                  "weight": "400",
                  "style": "normal",
                  "variable": false,
                  "format": "truetype",
                  "mime": "font/ttf",
                  "byteLength": 148672,
                  "digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                  "revision": "1",
                  "usedBy": []
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PresentationInvalid"
          },
          "404": {
            "$ref": "#/components/responses/PresentationMissing"
          },
          "409": {
            "$ref": "#/components/responses/PresentationRejected"
          },
          "413": {
            "$ref": "#/components/responses/PresentationTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/PresentationUnsupportedFont"
          },
          "503": {
            "$ref": "#/components/responses/PresentationUnavailable"
          }
        },
        "description": "WOFF2, WOFF, TTF, OTF including variable fonts at default axes. Raw file <=10 MiB. Multipart total <=10 MiB +64 KiB. At most 256 files and 512 MiB total. Metadata is derived from bounded container inspection. Every deliberate upload uses a new font:UUID; exact same-ID replay is idempotent. No replacement.",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id",
                  "name",
                  "file"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "font:11111111-1111-4111-8111-111111111111"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "example": "Go Regular"
                  },
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "example": "<original font file bytes>"
                  }
                }
              },
              "example": {
                "id": "font:11111111-1111-4111-8111-111111111111",
                "name": "Go Regular",
                "file": "<original font file bytes>"
              }
            }
          },
          "description": "Client-generated font:UUID, display name, and one original font file. Metadata comes from file contents."
        }
      }
    },
    "/api/v1/fonts/{fontID}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/PresentationFontID"
        }
      ],
      "delete": {
        "operationId": "DeleteFont",
        "tags": [
          "Presentation"
        ],
        "summary": "Delete an uploaded font with no saved references",
        "responses": {
          "204": {
            "description": "Unreferenced uploaded font bytes and metadata removed."
          },
          "400": {
            "$ref": "#/components/responses/PresentationInvalid"
          },
          "404": {
            "$ref": "#/components/responses/PresentationMissing"
          },
          "409": {
            "$ref": "#/components/responses/PresentationRejected"
          },
          "503": {
            "$ref": "#/components/responses/PresentationUnavailable"
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/PresentationExpectedRevision"
          }
        ],
        "description": "Checks the immutable font revision and rejects references from any saved theme with 409 in_use and usedBy. No referenced bytes are replaced or removed."
      }
    },
    "/api/v1/fonts/{fontID}/file": {
      "parameters": [
        {
          "$ref": "#/components/parameters/PresentationFontID"
        }
      ],
      "get": {
        "operationId": "GetFontFile",
        "tags": [
          "Presentation"
        ],
        "summary": "Read original immutable font bytes",
        "responses": {
          "200": {
            "description": "Immutable original bytes; private cache and ETag",
            "content": {
              "font/woff2": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "font/woff": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "font/ttf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "font/otf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "304": {
            "description": "Not modified"
          },
          "400": {
            "$ref": "#/components/responses/PresentationInvalid"
          },
          "404": {
            "$ref": "#/components/responses/PresentationMissing"
          },
          "409": {
            "$ref": "#/components/responses/PresentationRejected"
          },
          "503": {
            "$ref": "#/components/responses/PresentationUnavailable"
          }
        },
        "description": "Returns original uploaded font bytes with validated media type, quoted digest ETag and private, max-age=0, must-revalidate caching. If-None-Match may produce 304. Missing or deleted references return the JSON error envelope."
      }
    }
  },
  "components": {
    "securitySchemes": {
      "PluginService": {
        "type": "http",
        "scheme": "bearer",
        "description": "Private BFF service credential for plugin metadata, queries and retained widget configuration."
      },
      "FederationBearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "Source-bound agent credential. Send Authorization: Bearer <token>. The body source.kind and source.id must match the source registered for that credential. This scheme applies only to the two federation ingestion endpoints."
      },
      "NotificationOperator": {
        "type": "http",
        "scheme": "bearer",
        "description": "Private operator credential for listing, reading, marking and clearing the retained inbox. It cannot publish messages."
      },
      "NotificationPublisher": {
        "type": "http",
        "scheme": "bearer",
        "description": "Configured source-bound credential for external publication only. It cannot list, mark or clear messages."
      }
    },
    "responses": {
      "PresentationInvalid": {
        "description": "Malformed command, unsupported values, unknown fields, or a missing required revision.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "code": "invalid_request",
              "message": "Invalid presentation request."
            }
          }
        }
      },
      "PresentationMissing": {
        "description": "The requested custom theme or uploaded font does not exist.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "code": "not_found",
              "message": "Resource not found."
            }
          }
        }
      },
      "PresentationRejected": {
        "description": "Optimistic conflict, reused identity with different content, item in use, or a catalog/storage quota. Saved state is preserved.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "code": "conflict",
              "message": "Saved state changed. Preserve the draft and inspect the saved version."
            }
          }
        }
      },
      "PresentationTooLarge": {
        "description": "Raw upload, multipart request, declared decoded size, or actual decoded output exceeds the documented bound.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "code": "upload_too_large",
              "message": "Font exceeds upload or decoded-data limits."
            }
          }
        }
      },
      "PresentationUnsupportedFont": {
        "description": "Unsupported font container. Collections and EOT files are excluded.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "code": "unsupported_font",
              "message": "Use a single WOFF2, WOFF, TTF, or OTF font."
            }
          }
        }
      },
      "PresentationUnavailable": {
        "description": "Required storage or catalog could not be read or committed. No synthetic empty state is returned.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "code": "unavailable",
              "message": "Presentation storage or catalog unavailable."
            }
          }
        }
      }
    },
    "parameters": {
      "PresentationThemeID": {
        "name": "themeID",
        "in": "path",
        "required": true,
        "description": "Stable theme:UUID returned by the custom-theme catalog.",
        "schema": {
          "type": "string"
        }
      },
      "PresentationFontID": {
        "name": "fontID",
        "in": "path",
        "required": true,
        "description": "Immutable font:UUID returned by an upload or the uploaded-font catalog.",
        "schema": {
          "type": "string"
        }
      },
      "PresentationExpectedRevision": {
        "name": "expectedRevision",
        "in": "query",
        "required": true,
        "description": "Exact current revision of the item being deleted. A stale value returns 409.",
        "schema": {
          "$ref": "#/components/schemas/PresentationRevision"
        }
      }
    },
    "schemas": {
      "PluginPlacementBody": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "pluginId",
          "connectionId",
          "contributionId",
          "options",
          "enabled"
        ],
        "properties": {
          "pluginId": {
            "type": "string",
            "example": "example.status"
          },
          "connectionId": {
            "type": "string",
            "example": "00000000-0000-4000-8000-000000000001"
          },
          "contributionId": {
            "type": "string",
            "example": "summary"
          },
          "options": {
            "type": "object",
            "additionalProperties": true,
            "example": {}
          },
          "enabled": {
            "type": "boolean",
            "example": true
          }
        },
        "description": "Selected plugin connection, widget contribution, saved options and enabled state.",
        "example": {
          "pluginId": "example.status",
          "connectionId": "00000000-0000-4000-8000-000000000001",
          "contributionId": "summary",
          "options": {},
          "enabled": true
        }
      },
      "PluginPlacement": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "pluginId",
          "connectionId",
          "contributionId",
          "options",
          "enabled",
          "placementId",
          "revision",
          "createdAt",
          "updatedAt"
        ],
        "properties": {
          "pluginId": {
            "type": "string",
            "example": "example.status"
          },
          "connectionId": {
            "type": "string",
            "example": "00000000-0000-4000-8000-000000000001"
          },
          "contributionId": {
            "type": "string",
            "example": "summary"
          },
          "options": {
            "type": "object",
            "additionalProperties": true,
            "example": {}
          },
          "enabled": {
            "type": "boolean",
            "example": true
          },
          "placementId": {
            "type": "string",
            "example": "00000000-0000-4000-8000-000000000002"
          },
          "revision": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "example": "1"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-10-26T12:00:00Z"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-10-26T12:00:00Z"
          }
        },
        "description": "Retained widget configuration with its optimistic concurrency revision and persistence timestamps.",
        "example": {
          "pluginId": "example.status",
          "connectionId": "00000000-0000-4000-8000-000000000001",
          "contributionId": "summary",
          "options": {},
          "enabled": true,
          "placementId": "00000000-0000-4000-8000-000000000002",
          "revision": "1",
          "createdAt": "2026-10-26T12:00:00Z",
          "updatedAt": "2026-10-26T12:00:00Z"
        }
      },
      "PluginWidgetDefinition": {
        "type": "object",
        "required": [
          "pluginId",
          "contributionId",
          "title",
          "optionsSchema"
        ],
        "properties": {
          "pluginId": {
            "type": "string",
            "example": "example.status"
          },
          "contributionId": {
            "type": "string",
            "example": "summary"
          },
          "title": {
            "type": "string",
            "example": "Example summary"
          },
          "optionsSchema": {
            "type": "object",
            "additionalProperties": true,
            "example": {
              "type": "object",
              "properties": {},
              "additionalProperties": false
            }
          }
        },
        "description": "Installed widget contribution and its JSON Schema for user-configurable options.",
        "example": {
          "pluginId": "example.status",
          "contributionId": "summary",
          "title": "Example summary",
          "optionsSchema": {
            "type": "object",
            "properties": {},
            "additionalProperties": false
          }
        }
      },
      "PluginCatalog": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "plugins",
          "problems"
        ],
        "properties": {
          "plugins": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PluginDescriptor"
            },
            "example": []
          },
          "problems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PluginInstallationProblem"
            },
            "example": []
          }
        },
        "description": "Installed plugin descriptors and safe installation failures, without executable paths or credentials.",
        "example": {
          "plugins": [],
          "problems": []
        }
      },
      "PluginInstallationProblem": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "installationId",
          "error"
        ],
        "properties": {
          "installationId": {
            "type": "string",
            "example": "example-installation"
          },
          "pluginId": {
            "type": "string",
            "example": "example.status"
          },
          "connectionKey": {
            "type": "string",
            "example": "primary"
          },
          "error": {
            "$ref": "#/components/schemas/PluginFailure"
          }
        },
        "description": "Installation identity and safe failure details when a configured package cannot become available.",
        "example": {
          "installationId": "example-installation",
          "pluginId": "example.status",
          "connectionKey": "primary",
          "error": {
            "code": "unavailable",
            "message": "Source unavailable",
            "retryable": true
          }
        }
      },
      "PluginDescriptor": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "version",
          "manifestDigest",
          "connections"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "example.status"
          },
          "version": {
            "type": "string",
            "example": "0.1.0"
          },
          "manifestDigest": {
            "type": "string",
            "example": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
          },
          "connections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PluginConnection"
            },
            "example": [
              {
                "id": "00000000-0000-4000-8000-000000000001",
                "key": "primary",
                "name": "Example source",
                "revision": "1",
                "enabled": true,
                "ready": true,
                "state": "fresh",
                "appliedRevision": "1",
                "observationRevision": "1",
                "observedAt": "2026-10-26T12:00:00Z",
                "lastAttemptAt": "2026-10-26T12:00:00Z",
                "lastSuccessAt": "2026-10-26T12:00:00Z",
                "lastConfigureAttemptAt": "2026-10-26T12:00:00Z",
                "queries": [
                  "list"
                ]
              }
            ]
          }
        },
        "description": "Installed plugin version, verified manifest digest and configured connection descriptors.",
        "example": {
          "id": "example.status",
          "version": "0.1.0",
          "manifestDigest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
          "connections": [
            {
              "id": "00000000-0000-4000-8000-000000000001",
              "key": "primary",
              "name": "Example source",
              "revision": "1",
              "enabled": true,
              "ready": true,
              "state": "fresh",
              "appliedRevision": "1",
              "observationRevision": "1",
              "observedAt": "2026-10-26T12:00:00Z",
              "lastAttemptAt": "2026-10-26T12:00:00Z",
              "lastSuccessAt": "2026-10-26T12:00:00Z",
              "lastConfigureAttemptAt": "2026-10-26T12:00:00Z",
              "queries": [
                "list"
              ]
            }
          ]
        }
      },
      "PluginConnection": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "key",
          "name",
          "revision",
          "enabled",
          "ready",
          "state",
          "appliedRevision",
          "observationRevision",
          "observedAt",
          "lastAttemptAt",
          "lastSuccessAt",
          "lastConfigureAttemptAt",
          "queries"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "00000000-0000-4000-8000-000000000001"
          },
          "key": {
            "type": "string",
            "example": "primary"
          },
          "name": {
            "type": "string",
            "example": "Example source"
          },
          "revision": {
            "type": "string",
            "example": "1"
          },
          "enabled": {
            "type": "boolean",
            "example": true
          },
          "ready": {
            "type": "boolean",
            "example": true
          },
          "state": {
            "type": "string",
            "enum": [
              "fresh",
              "partial",
              "stale",
              "unavailable"
            ],
            "example": "fresh"
          },
          "appliedRevision": {
            "type": "string",
            "nullable": true,
            "example": "1"
          },
          "observationRevision": {
            "type": "string",
            "nullable": true,
            "example": "1"
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "example": "2026-10-26T12:00:00Z"
          },
          "lastSuccessAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "example": "2026-10-26T12:00:00Z"
          },
          "lastAttemptAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "example": "2026-10-26T12:00:00Z"
          },
          "lastConfigureAttemptAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "example": "2026-10-26T12:00:00Z"
          },
          "sourceError": {
            "$ref": "#/components/schemas/PluginFailure"
          },
          "configurationError": {
            "$ref": "#/components/schemas/PluginFailure"
          },
          "queries": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "list"
            ]
          }
        },
        "description": "Connection identity, applied configuration revision, collection state and available query identifiers.",
        "example": {
          "id": "00000000-0000-4000-8000-000000000001",
          "key": "primary",
          "name": "Example source",
          "revision": "1",
          "enabled": true,
          "ready": true,
          "state": "fresh",
          "appliedRevision": "1",
          "observationRevision": "1",
          "observedAt": "2026-10-26T12:00:00Z",
          "lastAttemptAt": "2026-10-26T12:00:00Z",
          "lastSuccessAt": "2026-10-26T12:00:00Z",
          "lastConfigureAttemptAt": "2026-10-26T12:00:00Z",
          "queries": [
            "list"
          ]
        }
      },
      "PluginFailure": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "code",
          "message",
          "retryable"
        ],
        "properties": {
          "code": {
            "type": "string",
            "example": "unavailable"
          },
          "message": {
            "type": "string",
            "example": "Source unavailable"
          },
          "retryable": {
            "type": "boolean",
            "example": true
          }
        },
        "description": "Safe error code and message, with a retryability hint and no source credentials.",
        "example": {
          "code": "unavailable",
          "message": "Source unavailable",
          "retryable": true
        }
      },
      "PluginQueryResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "state",
          "observationRevision",
          "observedAt",
          "lastSuccessAt"
        ],
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": true,
            "example": {
              "count": 2
            }
          },
          "state": {
            "type": "string",
            "enum": [
              "fresh",
              "partial",
              "stale",
              "unavailable"
            ],
            "example": "fresh"
          },
          "observationRevision": {
            "type": "string",
            "example": "1"
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "example": "2026-10-26T12:00:00Z"
          },
          "lastSuccessAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "example": "2026-10-26T12:00:00Z"
          },
          "sourceError": {
            "$ref": "#/components/schemas/PluginFailure"
          }
        },
        "description": "Cached query data with collection freshness, observation identity and source failure metadata.",
        "example": {
          "data": {
            "count": 2
          },
          "state": "fresh",
          "observationRevision": "1",
          "observedAt": "2026-10-26T12:00:00Z",
          "lastSuccessAt": "2026-10-26T12:00:00Z"
        }
      },
      "DashboardSnapshot": {
        "type": "object",
        "required": [
          "items",
          "unavailable"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DashboardWidget"
            },
            "description": "Selected widgets in provider order.",
            "example": [
              {
                "id": "service-57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                "kind": "service-links",
                "presentation": "card",
                "sourceKind": "service",
                "sourceId": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                "title": "Grafana",
                "data": {
                  "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                  "source": {
                    "kind": "container",
                    "id": "atlas"
                  },
                  "resource": {
                    "kind": "container",
                    "name": "grafana"
                  },
                  "displayName": "Grafana",
                  "description": "Metrics and dashboards",
                  "metadata": {
                    "fixture": "synthetic"
                  },
                  "endpoints": [
                    {
                      "name": "https",
                      "url": "https://grafana.example.test",
                      "port": 443,
                      "protocol": "HTTPS",
                      "provenance": "synthetic"
                    }
                  ],
                  "images": [],
                  "observedAt": "2026-10-25T12:00:00Z",
                  "status": "live",
                  "missing": false,
                  "icon": "selfhst:grafana",
                  "address": "",
                  "resources": [
                    {
                      "resource": {
                        "kind": "container",
                        "name": "grafana"
                      },
                      "endpoints": [
                        {
                          "name": "https",
                          "url": "https://grafana.example.test",
                          "port": 443,
                          "protocol": "HTTPS",
                          "provenance": "synthetic"
                        }
                      ],
                      "images": []
                    }
                  ],
                  "pinned": true,
                  "pinnedAt": "2026-10-25T12:00:00Z"
                },
                "error": ""
              }
            ]
          },
          "unavailable": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Source kinds whose providers failed while building this snapshot; an empty list means all providers responded.",
            "example": []
          }
        },
        "description": "Homepage widgets from the registered providers. A provider may fail independently; inspect unavailable even when the HTTP status is 200.",
        "example": {
          "items": [
            {
              "id": "service-57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
              "kind": "service-links",
              "presentation": "card",
              "sourceKind": "service",
              "sourceId": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
              "title": "Grafana",
              "data": {
                "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                "source": {
                  "kind": "container",
                  "id": "atlas"
                },
                "resource": {
                  "kind": "container",
                  "name": "grafana"
                },
                "displayName": "Grafana",
                "description": "Metrics and dashboards",
                "metadata": {
                  "fixture": "synthetic"
                },
                "endpoints": [
                  {
                    "name": "https",
                    "url": "https://grafana.example.test",
                    "port": 443,
                    "protocol": "HTTPS",
                    "provenance": "synthetic"
                  }
                ],
                "images": [],
                "observedAt": "2026-10-25T12:00:00Z",
                "status": "live",
                "missing": false,
                "icon": "selfhst:grafana",
                "address": "",
                "resources": [
                  {
                    "resource": {
                      "kind": "container",
                      "name": "grafana"
                    },
                    "endpoints": [
                      {
                        "name": "https",
                        "url": "https://grafana.example.test",
                        "port": 443,
                        "protocol": "HTTPS",
                        "provenance": "synthetic"
                      }
                    ],
                    "images": []
                  }
                ],
                "pinned": true,
                "pinnedAt": "2026-10-25T12:00:00Z"
              },
              "error": ""
            }
          ],
          "unavailable": []
        }
      },
      "DashboardWidget": {
        "type": "object",
        "required": [
          "id",
          "kind",
          "presentation",
          "sourceKind",
          "sourceId",
          "title",
          "data",
          "error"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Widget identity, formed as sourceKind-sourceId.",
            "example": "service-57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14"
          },
          "kind": {
            "type": "string",
            "description": "Rendering kind such as service-links or host-metrics.",
            "example": "service-links"
          },
          "presentation": {
            "type": "string",
            "description": "Presentation hint; the current providers use card.",
            "example": "card"
          },
          "sourceKind": {
            "type": "string",
            "description": "Selection provider, currently service or host.",
            "example": "service"
          },
          "sourceId": {
            "type": "string",
            "description": "Catalog service ID or host ID used by the selection endpoint.",
            "example": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14"
          },
          "title": {
            "type": "string",
            "description": "Display title for this widget.",
            "example": "Grafana"
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Kind-specific payload; empty when no payload can be rendered.",
            "example": {
              "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
              "source": {
                "kind": "container",
                "id": "atlas"
              },
              "resource": {
                "kind": "container",
                "name": "grafana"
              },
              "displayName": "Grafana",
              "description": "Metrics and dashboards",
              "metadata": {
                "fixture": "synthetic"
              },
              "endpoints": [
                {
                  "name": "https",
                  "url": "https://grafana.example.test",
                  "port": 443,
                  "protocol": "HTTPS",
                  "provenance": "synthetic"
                }
              ],
              "images": [],
              "observedAt": "2026-10-25T12:00:00Z",
              "status": "live",
              "missing": false,
              "icon": "selfhst:grafana",
              "address": "",
              "resources": [
                {
                  "resource": {
                    "kind": "container",
                    "name": "grafana"
                  },
                  "endpoints": [
                    {
                      "name": "https",
                      "url": "https://grafana.example.test",
                      "port": 443,
                      "protocol": "HTTPS",
                      "provenance": "synthetic"
                    }
                  ],
                  "images": []
                }
              ],
              "pinned": true,
              "pinnedAt": "2026-10-25T12:00:00Z"
            }
          },
          "error": {
            "type": "string",
            "description": "Readable per-widget failure, or an empty string on success.",
            "example": ""
          }
        },
        "description": "A selected homepage item. sourceKind and sourceId identify the selection; kind chooses the rendering model. Service data contains ServiceCandidate fields, while host-metrics data contains latest host readings without samples or workloads. Consumers must tolerate unfamiliar kinds and per-item errors.",
        "example": {
          "id": "service-57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
          "kind": "service-links",
          "presentation": "card",
          "sourceKind": "service",
          "sourceId": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
          "title": "Grafana",
          "data": {
            "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
            "source": {
              "kind": "container",
              "id": "atlas"
            },
            "resource": {
              "kind": "container",
              "name": "grafana"
            },
            "displayName": "Grafana",
            "description": "Metrics and dashboards",
            "metadata": {
              "fixture": "synthetic"
            },
            "endpoints": [
              {
                "name": "https",
                "url": "https://grafana.example.test",
                "port": 443,
                "protocol": "HTTPS",
                "provenance": "synthetic"
              }
            ],
            "images": [],
            "observedAt": "2026-10-25T12:00:00Z",
            "status": "live",
            "missing": false,
            "icon": "selfhst:grafana",
            "address": "",
            "resources": [
              {
                "resource": {
                  "kind": "container",
                  "name": "grafana"
                },
                "endpoints": [
                  {
                    "name": "https",
                    "url": "https://grafana.example.test",
                    "port": 443,
                    "protocol": "HTTPS",
                    "provenance": "synthetic"
                  }
                ],
                "images": []
              }
            ],
            "pinned": true,
            "pinnedAt": "2026-10-25T12:00:00Z"
          },
          "error": ""
        }
      },
      "HostMetrics": {
        "type": "object",
        "required": [
          "cpuPercent",
          "memoryUsedBytes",
          "memoryTotalBytes"
        ],
        "properties": {
          "cpuPercent": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "minimum": 0,
            "maximum": 100,
            "description": "Host CPU usage as a percentage from 0 to 100; null when unavailable.",
            "example": 23.4
          },
          "memoryUsedBytes": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "minimum": 0,
            "description": "Used host memory in bytes; null when unavailable.",
            "example": 8589934592
          },
          "memoryTotalBytes": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "minimum": 1,
            "description": "Total host memory in bytes; positive when available.",
            "example": 34359738368
          }
        },
        "description": "Basic host measurements. Null means unavailable, not zero. CPU is a percentage of total CPU capacity. Memory values are bytes and must be present as a valid pair.",
        "example": {
          "cpuPercent": 23.4,
          "memoryUsedBytes": 8589934592,
          "memoryTotalBytes": 34359738368
        }
      },
      "HostWorkload": {
        "type": "object",
        "required": [
          "name",
          "namespace",
          "state",
          "restarts"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 253,
            "description": "Reported container or pod name.",
            "example": "grafana"
          },
          "namespace": {
            "type": "string",
            "maxLength": 253,
            "description": "Kubernetes pod namespace, or an empty string for Docker.",
            "example": ""
          },
          "state": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Runtime state such as running for Docker or Running for a pod.",
            "example": "running"
          },
          "restarts": {
            "type": "integer",
            "minimum": 0,
            "description": "Reported Kubernetes pod restart count; Docker reports zero because restart counts are not collected.",
            "example": 0
          },
          "node": {
            "type": "string",
            "maxLength": 253,
            "description": "Kubernetes node hosting the pod. Omitted when unknown or not reported by the runtime.",
            "example": "atlas"
          },
          "ready": {
            "type": "boolean",
            "description": "Pod Ready condition. Absent when unknown, from older agents, or for Docker containers. Does not verify HTTP reachability.",
            "example": true
          },
          "reason": {
            "type": "string",
            "maxLength": 253,
            "description": "Current pod or container waiting/termination reason, never a previous termination reason.",
            "example": "CrashLoopBackOff"
          },
          "images": {
            "type": "array",
            "maxItems": 64,
            "description": "Container image references reported for this workload. Omitted when unavailable.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 2048
            },
            "example": [
              "grafana/grafana:12.0.0"
            ]
          }
        },
        "description": "A reported container or pod with runtime state. Docker does not collect restart counts, so its restart field is zero; Kubernetes pod reports include namespace and restarts.",
        "example": {
          "name": "grafana",
          "namespace": "",
          "state": "running",
          "restarts": 0
        }
      },
      "HostObservation": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HostMetrics"
          },
          {
            "type": "object",
            "required": [
              "node",
              "workloads",
              "inventoryAvailable",
              "ready"
            ],
            "properties": {
              "inventoryAvailable": {
                "type": "boolean",
                "description": "True when the workload list is complete and available. False is different from an available empty list and can indicate truncation.",
                "example": true
              },
              "ready": {
                "type": "string",
                "description": "Kubernetes node readiness: True, False, Unknown, or empty when not applicable.",
                "example": ""
              },
              "architecture": {
                "type": "string",
                "maxLength": 64,
                "description": "Host CPU architecture such as amd64 or arm64. Optional for older agents and unknown hosts; omit on cluster aggregates.",
                "example": "amd64"
              },
              "node": {
                "type": "string",
                "maxLength": 253,
                "description": "Empty for the source root; Kubernetes node name for a child observation.",
                "example": ""
              },
              "workloads": {
                "type": "array",
                "maxItems": 1000,
                "items": {
                  "$ref": "#/components/schemas/HostWorkload"
                },
                "description": "Reported workload inventory, limited to 1000 entries for this host.",
                "example": [
                  {
                    "name": "grafana",
                    "namespace": "",
                    "state": "running",
                    "restarts": 0
                  }
                ]
              }
            },
            "description": "Host identity within the source, architecture, readiness, and workload inventory.",
            "example": {
              "inventoryAvailable": true,
              "ready": "",
              "architecture": "amd64",
              "node": "",
              "workloads": [
                {
                  "name": "grafana",
                  "namespace": "",
                  "state": "running",
                  "restarts": 0
                }
              ]
            }
          }
        ],
        "description": "One host observation. An empty node identifies the source root. A Kubernetes batch can include named child nodes; a Docker batch contains only its root. Inventory availability is separate from CPU and memory availability.",
        "example": {
          "cpuPercent": 23.4,
          "memoryUsedBytes": 8589934592,
          "memoryTotalBytes": 34359738368,
          "node": "",
          "architecture": "amd64",
          "inventoryAvailable": true,
          "ready": "",
          "workloads": [
            {
              "name": "grafana",
              "namespace": "",
              "state": "running",
              "restarts": 0
            }
          ]
        }
      },
      "TelemetryBatch": {
        "type": "object",
        "required": [
          "source",
          "observedAt",
          "hosts"
        ],
        "properties": {
          "source": {
            "$ref": "#/components/schemas/SourceRef"
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "description": "UTC collection time shared by every host in this batch.",
            "example": "2026-10-25T12:00:00Z"
          },
          "hosts": {
            "type": "array",
            "minItems": 1,
            "maxItems": 128,
            "items": {
              "$ref": "#/components/schemas/HostObservation"
            },
            "description": "Root and optional child observations. Always include node=\"\"; container sources contain exactly one host.",
            "example": [
              {
                "cpuPercent": 23.4,
                "memoryUsedBytes": 8589934592,
                "memoryTotalBytes": 34359738368,
                "node": "",
                "architecture": "amd64",
                "inventoryAvailable": true,
                "ready": "",
                "workloads": [
                  {
                    "name": "grafana",
                    "namespace": "",
                    "state": "running",
                    "restarts": 0
                  }
                ]
              }
            ]
          }
        },
        "description": "A source-bound report collected at observedAt. Requires a root observation, unique node names, at most 128 hosts, and at most 1000 workloads per host. One source retains no more than 128 hosts. Telemetry times must be within the last 24 hours and at most 30 seconds ahead of the gateway clock.",
        "example": {
          "source": {
            "kind": "container",
            "id": "atlas"
          },
          "observedAt": "2026-10-25T12:00:00Z",
          "hosts": [
            {
              "cpuPercent": 23.4,
              "memoryUsedBytes": 8589934592,
              "memoryTotalBytes": 34359738368,
              "node": "",
              "architecture": "amd64",
              "inventoryAvailable": true,
              "ready": "",
              "workloads": [
                {
                  "name": "grafana",
                  "namespace": "",
                  "state": "running",
                  "restarts": 0
                }
              ]
            }
          ]
        }
      },
      "Host": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HostObservation"
          },
          {
            "type": "object",
            "required": [
              "id",
              "name",
              "kind",
              "source",
              "parentId",
              "observedAt",
              "receivedAt",
              "status"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Opaque stable host identity. Use the value returned by the host API.",
                "example": "485497dc6417c5261c07e22ad6153c982eb4e0613c6a4bd568b361bc20190bbf"
              },
              "name": {
                "type": "string",
                "description": "Source ID for a root or node name for a Kubernetes child.",
                "example": "atlas"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "docker",
                  "cluster",
                  "node",
                  "unknown"
                ],
                "description": "Host category: docker, cluster, node, or unknown.",
                "example": "docker"
              },
              "source": {
                "$ref": "#/components/schemas/SourceRef"
              },
              "parentId": {
                "type": "string",
                "description": "Empty for roots; cluster host ID for child nodes.",
                "example": ""
              },
              "observedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "Last accepted collection time, or null before any report.",
                "example": "2026-10-25T12:00:00Z"
              },
              "receivedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "Gateway receipt time of the latest accepted report, or null before a report.",
                "example": "2026-10-25T12:00:00Z"
              },
              "status": {
                "type": "string",
                "enum": [
                  "fresh",
                  "partial",
                  "stale",
                  "unavailable"
                ],
                "description": "fresh means observation and receipt are at most three minutes old with complete metrics; partial means a recent report lacks metrics; stale means either timestamp is older; unavailable means no report has arrived.",
                "example": "fresh"
              }
            },
            "description": "Stored host identity, source linkage, accepted timestamps, and derived reporting status.",
            "example": {
              "id": "485497dc6417c5261c07e22ad6153c982eb4e0613c6a4bd568b361bc20190bbf",
              "name": "atlas",
              "kind": "docker",
              "source": {
                "kind": "container",
                "id": "atlas"
              },
              "parentId": "",
              "observedAt": "2026-10-25T12:00:00Z",
              "receivedAt": "2026-10-25T12:00:00Z",
              "status": "fresh"
            }
          }
        ],
        "description": "A registered source root or observed child node with its latest report and derived reporting status. Registration can exist before measurements arrive. Reporting status is independent of Kubernetes readiness.",
        "example": {
          "cpuPercent": 23.4,
          "memoryUsedBytes": 8589934592,
          "memoryTotalBytes": 34359738368,
          "node": "",
          "architecture": "amd64",
          "inventoryAvailable": true,
          "ready": "",
          "workloads": [
            {
              "name": "grafana",
              "namespace": "",
              "state": "running",
              "restarts": 0
            }
          ],
          "id": "485497dc6417c5261c07e22ad6153c982eb4e0613c6a4bd568b361bc20190bbf",
          "name": "atlas",
          "kind": "docker",
          "source": {
            "kind": "container",
            "id": "atlas"
          },
          "parentId": "",
          "observedAt": "2026-10-25T12:00:00Z",
          "receivedAt": "2026-10-25T12:00:00Z",
          "status": "fresh"
        }
      },
      "HostSample": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HostMetrics"
          },
          {
            "type": "object",
            "required": [
              "at"
            ],
            "properties": {
              "at": {
                "type": "string",
                "format": "date-time",
                "description": "UTC timestamp at the start of this sample minute.",
                "example": "2026-10-25T12:00:00Z"
              }
            },
            "description": "UTC minute timestamp attached to the shared CPU and memory measurements.",
            "example": {
              "at": "2026-10-25T12:00:00Z"
            }
          }
        ],
        "description": "One UTC minute slot in usage history. Metrics are null when no measurement exists for that minute. History retains the most recent 24 hours.",
        "example": {
          "cpuPercent": 23.4,
          "memoryUsedBytes": 8589934592,
          "memoryTotalBytes": 34359738368,
          "at": "2026-10-25T12:00:00Z"
        }
      },
      "HostDetail": {
        "type": "object",
        "required": [
          "host",
          "children",
          "samples",
          "range"
        ],
        "properties": {
          "host": {
            "$ref": "#/components/schemas/Host"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Host"
            },
            "description": "Direct child hosts, usually Kubernetes nodes; empty for a Docker host.",
            "example": []
          },
          "samples": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HostSample"
            },
            "description": "Chronological minute slots. Missing minutes retain null metrics. The example is abbreviated.",
            "example": [
              {
                "cpuPercent": 23.4,
                "memoryUsedBytes": 8589934592,
                "memoryTotalBytes": 34359738368,
                "at": "2026-10-25T12:00:00Z"
              }
            ]
          },
          "range": {
            "type": "string",
            "enum": [
              "1h",
              "24h"
            ],
            "description": "History window applied by the server: 1h or 24h.",
            "example": "1h"
          }
        },
        "description": "The requested host, its direct child nodes, and minute-aligned CPU and memory samples. The example shows an excerpt; actual 1h and 24h responses contain 60 and 1440 sample slots.",
        "example": {
          "host": {
            "cpuPercent": 23.4,
            "memoryUsedBytes": 8589934592,
            "memoryTotalBytes": 34359738368,
            "node": "",
            "architecture": "amd64",
            "inventoryAvailable": true,
            "ready": "",
            "workloads": [
              {
                "name": "grafana",
                "namespace": "",
                "state": "running",
                "restarts": 0
              }
            ],
            "id": "485497dc6417c5261c07e22ad6153c982eb4e0613c6a4bd568b361bc20190bbf",
            "name": "atlas",
            "kind": "docker",
            "source": {
              "kind": "container",
              "id": "atlas"
            },
            "parentId": "",
            "observedAt": "2026-10-25T12:00:00Z",
            "receivedAt": "2026-10-25T12:00:00Z",
            "status": "fresh"
          },
          "children": [],
          "samples": [
            {
              "cpuPercent": 23.4,
              "memoryUsedBytes": 8589934592,
              "memoryTotalBytes": 34359738368,
              "at": "2026-10-25T12:00:00Z"
            }
          ],
          "range": "1h"
        }
      },
      "UploadedIcon": {
        "type": "object",
        "required": [
          "id",
          "name",
          "tags",
          "mime",
          "digest",
          "usedBy"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Assigned upload: reference. Reuse this ID in service icon settings.",
            "example": "upload:EXAMPLE"
          },
          "name": {
            "type": "string",
            "description": "User-visible uploaded icon name.",
            "example": "Lab icon"
          },
          "tags": {
            "type": "string",
            "description": "User-supplied searchable icon tags.",
            "example": "lab,green"
          },
          "mime": {
            "type": "string",
            "description": "Validated image media type, used by the binary download response.",
            "example": "image/svg+xml"
          },
          "digest": {
            "type": "string",
            "description": "SHA-256 revision over name, a NUL byte, tags, a NUL byte, and image bytes. Supply it for update or delete.",
            "example": "862019886d8c1034c41a62f1972409e18c6f76427f279a2e86469c28ee0cfe77"
          },
          "usedBy": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Display names of services that currently reference this uploaded icon.",
            "example": []
          }
        },
        "description": "Metadata for a user-uploaded icon. digest is a revision of the trimmed name, tags, and image bytes, not just an image hash. usedBy lists service display names rather than service IDs.",
        "example": {
          "id": "upload:EXAMPLE",
          "name": "Lab icon",
          "tags": "lab,green",
          "mime": "image/svg+xml",
          "digest": "862019886d8c1034c41a62f1972409e18c6f76427f279a2e86469c28ee0cfe77",
          "usedBy": []
        }
      },
      "IconUpload": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "tags"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "description": "Nonblank icon name, at most 200 Unicode code points.",
            "example": "Lab icon"
          },
          "tags": {
            "type": "string",
            "maxLength": 1000,
            "description": "Icon search tags, at most 1000 Unicode code points.",
            "example": "lab,green"
          },
          "data": {
            "type": "string",
            "format": "byte",
            "description": "Base64 image bytes. Required for creation; omitted or empty retains existing bytes on update.",
            "example": "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj48cmVjdCB4PSI0IiB5PSI0IiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHJ4PSI0IiBmaWxsPSIjODRjYzE2Ii8+PC9zdmc+"
          },
          "digest": {
            "type": "string",
            "description": "Current uploaded icon revision, required for updates and ignored for creation.",
            "example": "862019886d8c1034c41a62f1972409e18c6f76427f279a2e86469c28ee0cfe77"
          }
        },
        "description": "Shared create/update payload for uploaded images. Creation requires nonempty Base64 data. Updates require the current digest; omitting data retains the existing image. Supported images are limited to 2 MiB and 4096 pixels.",
        "example": {
          "name": "Lab icon",
          "tags": "lab,green",
          "data": "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj48cmVjdCB4PSI0IiB5PSI0IiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHJ4PSI0IiBmaWxsPSIjODRjYzE2Ii8+PC9zdmc+"
        }
      },
      "HealthResponse": {
        "type": "object",
        "required": [
          "status"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "ok"
            ],
            "description": "ok means the API readiness checks passed.",
            "example": "ok"
          }
        },
        "description": "The readiness check succeeded, including the configured storage check. It does not describe discovered application health.",
        "example": {
          "status": "ok"
        }
      },
      "ErrorResponse": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "fieldErrors": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "conflict": {
            "$ref": "#/components/schemas/PresentationConflict"
          },
          "usedBy": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "code": {
            "type": "string",
            "description": "Machine-readable reason such as unavailable, not_found, conflict, or invalid_snapshot.",
            "example": "unavailable"
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation. Branch on code or HTTP status rather than matching this text.",
            "example": "catalog unavailable"
          }
        },
        "description": "Structured API error with a stable code and a readable message. Not every endpoint uses this envelope: plain-text errors are documented on their specific responses.",
        "example": {
          "code": "unavailable",
          "message": "catalog unavailable"
        }
      },
      "SourceRef": {
        "type": "object",
        "required": [
          "kind",
          "id"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "description": "Source kind, usually container or kubernetes. manual is reserved for local user-created services.",
            "example": "container"
          },
          "id": {
            "type": "string",
            "description": "Stable source identifier such as atlas. It must match the gateway registration for federation.",
            "example": "atlas"
          }
        },
        "description": "Stable discovery or telemetry source identity. container and kubernetes are agent source kinds. manual/local is reserved for user-created services and cannot be imported through discovery federation.",
        "example": {
          "kind": "container",
          "id": "atlas"
        }
      },
      "NotificationSource": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "kind",
          "id"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "core",
              "plugin",
              "external"
            ],
            "example": "external"
          },
          "id": {
            "type": "string",
            "example": "example-monitor"
          },
          "connectionId": {
            "type": "string",
            "nullable": true
          }
        },
        "description": "Producer identity assigned by the authenticated publisher or installed plugin connection.",
        "example": {
          "kind": "external",
          "id": "example-monitor"
        }
      },
      "NotificationDestination": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "kind"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "core",
              "plugin",
              "external"
            ],
            "example": "external"
          },
          "route": {
            "type": "string"
          },
          "pluginId": {
            "type": "string"
          },
          "connectionId": {
            "type": "string"
          },
          "page": {
            "type": "string"
          },
          "params": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "query": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "url": {
            "type": "string",
            "format": "uri",
            "example": "https://status.example.test/incidents/123"
          }
        },
        "description": "Optional navigation target. The kind selects a core route, a connection-scoped plugin page or an external URL.",
        "example": {
          "kind": "external",
          "url": "https://status.example.test/incidents/123"
        }
      },
      "WebPushSettings": {
        "description": "Public push capability and subscription status for one browser token.",
        "type": "object",
        "required": [
          "enabled",
          "publicKey",
          "subscribed"
        ],
        "properties": {
          "enabled": {
            "type": "boolean",
            "example": true
          },
          "publicKey": {
            "type": "string",
            "example": "BCPr_tS2j9fUo5L9V9E7n8jUyoMuhzh4o4Kg7KJVSnBVo-lHMht125tqFbP7SdGg_BgGRQ1FsAb4zykeSjAQYro"
          },
          "subscribed": {
            "type": "boolean",
            "example": false
          }
        }
      },
      "WebPushSubscription": {
        "description": "Browser push endpoint and public encryption material from PushManager.",
        "type": "object",
        "required": [
          "endpoint",
          "keys"
        ],
        "example": {
          "endpoint": "https://push.example.test/device",
          "keys": {
            "p256dh": "BCPr_tS2j9fUo5L9V9E7n8jUyoMuhzh4o4Kg7KJVSnBVo-lHMht125tqFbP7SdGg_BgGRQ1FsAb4zykeSjAQYro",
            "auth": "AAAAAAAAAAAAAAAAAAAAAA"
          }
        },
        "properties": {
          "endpoint": {
            "type": "string",
            "maxLength": 2048,
            "example": "https://push.example.test/device"
          },
          "keys": {
            "type": "object",
            "required": [
              "p256dh",
              "auth"
            ],
            "properties": {
              "p256dh": {
                "type": "string",
                "example": "BCPr_tS2j9fUo5L9V9E7n8jUyoMuhzh4o4Kg7KJVSnBVo-lHMht125tqFbP7SdGg_BgGRQ1FsAb4zykeSjAQYro"
              },
              "auth": {
                "type": "string",
                "example": "AAAAAAAAAAAAAAAAAAAAAA"
              }
            }
          }
        }
      },
      "WebPushRegistration": {
        "description": "Subscription paired with its private browser ownership token.",
        "type": "object",
        "required": [
          "token",
          "subscription"
        ],
        "properties": {
          "token": {
            "type": "string",
            "minLength": 43,
            "maxLength": 43,
            "example": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
          },
          "subscription": {
            "$ref": "#/components/schemas/WebPushSubscription"
          }
        }
      },
      "NotificationPublishRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "eventId",
          "severity",
          "title",
          "occurredAt"
        ],
        "properties": {
          "serviceId": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$",
            "description": "Optional producer-supplied service identity. The host may fill an empty presentation reference once without changing event identity."
          },
          "eventId": {
            "type": "string",
            "maxLength": 128,
            "example": "maintenance-20261026"
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "success",
              "warning",
              "critical"
            ],
            "example": "success"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "example": "Maintenance complete"
          },
          "body": {
            "type": "string",
            "maxLength": 4000,
            "example": "Datastore maintenance finished."
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-10-26T12:00:00Z"
          },
          "destination": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/NotificationDestination"
              }
            ],
            "example": {
              "kind": "external",
              "url": "https://status.example.test/incidents/123"
            }
          }
        },
        "description": "External publisher message. The credential determines source identity; eventId deduplicates within that source.",
        "example": {
          "eventId": "maintenance-20261026",
          "severity": "success",
          "title": "Maintenance complete",
          "body": "Datastore maintenance finished.",
          "occurredAt": "2026-10-26T12:00:00Z",
          "destination": {
            "kind": "external",
            "url": "https://status.example.test/incidents/123"
          }
        }
      },
      "Notification": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "source",
          "eventId",
          "severity",
          "title",
          "body",
          "occurredAt",
          "receivedAt",
          "readAt"
        ],
        "properties": {
          "serviceId": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$",
            "description": "Saved affected service identity. Notification views resolve the current icon only for visible services granted to this producer connection."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "example": "00000000-0000-4000-8000-000000000001"
          },
          "source": {
            "$ref": "#/components/schemas/NotificationSource"
          },
          "eventId": {
            "type": "string",
            "example": "maintenance-20261026"
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "success",
              "warning",
              "critical"
            ],
            "example": "success"
          },
          "title": {
            "type": "string",
            "example": "Maintenance complete"
          },
          "body": {
            "type": "string",
            "example": "Datastore maintenance finished."
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-10-26T12:00:00Z"
          },
          "receivedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-10-26T12:00:00Z"
          },
          "destination": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/NotificationDestination"
              }
            ],
            "example": {
              "kind": "external",
              "url": "https://status.example.test/incidents/123"
            }
          },
          "readAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "example": null
          }
        },
        "description": "Retained message with immutable producer content, server receipt time and independent read state.",
        "example": {
          "id": "00000000-0000-4000-8000-000000000001",
          "source": {
            "kind": "external",
            "id": "example-monitor"
          },
          "eventId": "maintenance-20261026",
          "severity": "success",
          "title": "Maintenance complete",
          "body": "Datastore maintenance finished.",
          "occurredAt": "2026-10-26T12:00:00Z",
          "destination": {
            "kind": "external",
            "url": "https://status.example.test/incidents/123"
          },
          "receivedAt": "2026-10-26T12:00:00Z",
          "readAt": null
        }
      },
      "NotificationReceipt": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "createdAt",
          "accepted"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "example": "00000000-0000-4000-8000-000000000001"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2026-10-26T12:00:00Z"
          },
          "accepted": {
            "type": "boolean",
            "example": true
          }
        },
        "description": "Durable notification identity and original creation time. accepted is false for an identical event replay.",
        "example": {
          "id": "00000000-0000-4000-8000-000000000001",
          "createdAt": "2026-10-26T12:00:00Z",
          "accepted": true
        }
      },
      "NotificationPage": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "notifications",
          "unreadCount",
          "retentionDays"
        ],
        "properties": {
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Notification"
            },
            "example": [
              {
                "id": "00000000-0000-4000-8000-000000000001",
                "source": {
                  "kind": "external",
                  "id": "example-monitor"
                },
                "eventId": "maintenance-20261026",
                "severity": "success",
                "title": "Maintenance complete",
                "body": "Datastore maintenance finished.",
                "occurredAt": "2026-10-26T12:00:00Z",
                "destination": {
                  "kind": "external",
                  "url": "https://status.example.test/incidents/123"
                },
                "receivedAt": "2026-10-26T12:00:00Z",
                "readAt": null
              }
            ]
          },
          "unreadCount": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "example": 1
          },
          "retentionDays": {
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 3650,
            "example": 30
          },
          "nextCursor": {
            "type": "string",
            "nullable": true
          }
        },
        "description": "Cursor-based retained inbox page, global unread count and effective retention in days.",
        "example": {
          "notifications": [
            {
              "id": "00000000-0000-4000-8000-000000000001",
              "source": {
                "kind": "external",
                "id": "example-monitor"
              },
              "eventId": "maintenance-20261026",
              "severity": "success",
              "title": "Maintenance complete",
              "body": "Datastore maintenance finished.",
              "occurredAt": "2026-10-26T12:00:00Z",
              "destination": {
                "kind": "external",
                "url": "https://status.example.test/incidents/123"
              },
              "receivedAt": "2026-10-26T12:00:00Z",
              "readAt": null
            }
          ],
          "unreadCount": 1,
          "retentionDays": 30
        }
      },
      "ResourceRef": {
        "type": "object",
        "required": [
          "kind",
          "name"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "description": "Observed resource type, for example container, Service, or HTTPRoute.",
            "example": "container"
          },
          "namespace": {
            "type": "string",
            "description": "Namespace within the source, if the resource is namespaced.",
            "example": ""
          },
          "name": {
            "type": "string",
            "description": "Stable source resource name used in discovery identity.",
            "example": "grafana"
          }
        },
        "description": "Resource identity inside a source. Namespace is normally absent or empty for container resources and set for namespaced Kubernetes resources.",
        "example": {
          "kind": "container",
          "name": "grafana"
        }
      },
      "ServiceEndpoint": {
        "type": "object",
        "required": [
          "name",
          "url",
          "port",
          "protocol",
          "provenance"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Observed endpoint or listener label.",
            "example": "https"
          },
          "url": {
            "type": "string",
            "description": "Discovered absolute or scheme-relative URL; empty if no exact address is known. Not a health-check result.",
            "example": "https://grafana.example.test"
          },
          "port": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 65535,
            "description": "Observed port, or zero when no port was observed.",
            "example": 443
          },
          "protocol": {
            "type": "string",
            "description": "Observed protocol such as HTTPS or TCP; not a guarantee that the application speaks HTTP.",
            "example": "HTTPS"
          },
          "provenance": {
            "type": "string",
            "description": "Adapter evidence that produced this endpoint, such as a route or published port.",
            "example": "synthetic"
          }
        },
        "description": "An observed endpoint and its discovery evidence. A published port alone is not proof of an HTTP address. An empty URL retains port evidence; a scheme-relative HTTPRoute URL can begin with //.",
        "example": {
          "name": "https",
          "url": "https://grafana.example.test",
          "port": 443,
          "protocol": "HTTPS",
          "provenance": "synthetic"
        }
      },
      "ResourceObservation": {
        "type": "object",
        "required": [
          "resource",
          "endpoints",
          "images"
        ],
        "properties": {
          "resource": {
            "$ref": "#/components/schemas/ResourceRef"
          },
          "endpoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceEndpoint"
            },
            "description": "Endpoint evidence for this grouped resource.",
            "example": [
              {
                "name": "https",
                "url": "https://grafana.example.test",
                "port": 443,
                "protocol": "HTTPS",
                "provenance": "synthetic"
              }
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Container image references observed for this resource; not URLs of service icons. Null is returned when no image references are stored.",
            "example": [],
            "nullable": true,
            "x-go-type-skip-optional-pointer": true
          }
        },
        "description": "The resource, endpoints, and images retained behind one member of a grouped service. It is evidence, not an independently selected homepage card.",
        "example": {
          "resource": {
            "kind": "container",
            "name": "grafana"
          },
          "endpoints": [
            {
              "name": "https",
              "url": "https://grafana.example.test",
              "port": 443,
              "protocol": "HTTPS",
              "provenance": "synthetic"
            }
          ],
          "images": []
        }
      },
      "ManualServiceCreate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "requestId",
          "displayName",
          "description",
          "address"
        ],
        "properties": {
          "requestId": {
            "type": "string",
            "pattern": "^[a-fA-F0-9]{32}$",
            "description": "Client-generated 16-byte random key encoded as 32 hexadecimal characters. Reuse it for retries; replays never overwrite edits.",
            "example": "0123456789abcdef0123456789abcdef"
          },
          "displayName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Initial nonblank service name, up to 200 Unicode code points.",
            "example": "Grafana"
          },
          "description": {
            "type": "string",
            "maxLength": 2000,
            "description": "Initial service description; send an empty string when unused.",
            "example": "Metrics and dashboards"
          },
          "address": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2048,
            "description": "Required absolute HTTP(S) address without embedded credentials.",
            "example": "https://grafana.example.test"
          },
          "icon": {
            "type": "string",
            "maxLength": 256,
            "description": "Optional bundled or uploaded reference such as selfhst:grafana or upload:EXAMPLE.",
            "example": "selfhst:grafana"
          }
        },
        "description": "Idempotent creation input for an application outside automated discovery. The generated catalog identity does not depend on the supplied name or URL. New records are live and unpinned.",
        "example": {
          "requestId": "0123456789abcdef0123456789abcdef",
          "displayName": "Grafana",
          "description": "Metrics and dashboards",
          "address": "https://grafana.example.test",
          "icon": "selfhst:grafana"
        }
      },
      "ServiceEdit": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "displayName",
          "description",
          "address"
        ],
        "properties": {
          "icon": {
            "type": "string",
            "maxLength": 256,
            "description": "Omit to preserve the icon choice, use an empty string to reset, or select a bundled/uploaded reference.",
            "example": "selfhst:grafana"
          },
          "displayName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Saved nonblank display name, up to 200 Unicode code points.",
            "example": "Grafana"
          },
          "description": {
            "type": "string",
            "maxLength": 2000,
            "description": "Saved service description; required but may be empty.",
            "example": "Metrics and dashboards"
          },
          "address": {
            "type": "string",
            "maxLength": 2048,
            "description": "Homepage address override without credentials. Empty restores discovery for discovered entries; not valid for manual entries.",
            "example": "https://grafana.example.test"
          }
        },
        "description": "Local name, description, address, and icon overrides. Discovery refreshes preserve these fields. Empty address restores discovery except for manual services, which require a usable HTTP(S) address.",
        "example": {
          "displayName": "Grafana",
          "description": "Metrics and dashboards",
          "address": "https://grafana.example.test",
          "icon": "selfhst:grafana"
        }
      },
      "ServiceCandidate": {
        "type": "object",
        "required": [
          "status",
          "missing",
          "id",
          "source",
          "resource",
          "displayName",
          "description",
          "metadata",
          "endpoints",
          "images",
          "observedAt",
          "pinned",
          "pinnedAt"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "live",
              "missing",
              "hidden"
            ],
            "description": "Effective lifecycle state. hidden takes precedence over missing until the service is shown again.",
            "example": "live"
          },
          "missing": {
            "type": "boolean",
            "description": "True when absent from the latest successful complete source snapshot, including a hidden missing entry.",
            "example": false
          },
          "icon": {
            "type": "string",
            "description": "Effective local icon reference; an empty string uses the discovery default.",
            "example": "selfhst:grafana"
          },
          "address": {
            "type": "string",
            "description": "Local homepage address override; an empty string falls back to discovered endpoints.",
            "example": ""
          },
          "resources": {
            "type": "array",
            "description": "Member observations grouped behind this service; pin identity remains the top-level service ID.",
            "items": {
              "$ref": "#/components/schemas/ResourceObservation"
            },
            "example": [
              {
                "resource": {
                  "kind": "container",
                  "name": "grafana"
                },
                "endpoints": [
                  {
                    "name": "https",
                    "url": "https://grafana.example.test",
                    "port": 443,
                    "protocol": "HTTPS",
                    "provenance": "synthetic"
                  }
                ],
                "images": []
              }
            ]
          },
          "id": {
            "type": "string",
            "description": "Stable group identity returned by Staging; use this ID for edits, pins, and lifecycle actions.",
            "example": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14"
          },
          "source": {
            "$ref": "#/components/schemas/SourceRef"
          },
          "resource": {
            "$ref": "#/components/schemas/ResourceRef"
          },
          "displayName": {
            "type": "string",
            "description": "Effective service name after applying any local override.",
            "example": "Grafana"
          },
          "description": {
            "type": "string",
            "description": "Effective service description shown by homepage cards and search.",
            "example": "Metrics and dashboards"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Adapter-provided string evidence. Keys are source-specific and should not be treated as a universal contract.",
            "example": {
              "fixture": "synthetic"
            }
          },
          "endpoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceEndpoint"
            },
            "description": "Grouped discovery addresses and port evidence, before a local address override.",
            "example": [
              {
                "name": "https",
                "url": "https://grafana.example.test",
                "port": 443,
                "protocol": "HTTPS",
                "provenance": "synthetic"
              }
            ]
          },
          "images": {
            "type": "array",
            "description": "Discovered container image names, not uploaded icon bytes. Null is returned when no image references are stored.",
            "items": {
              "type": "string"
            },
            "example": [],
            "nullable": true,
            "x-go-type-skip-optional-pointer": true
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Latest catalog observation timestamp in UTC.",
            "example": "2026-10-25T12:00:00Z"
          },
          "pinned": {
            "type": "boolean",
            "description": "Saved homepage selection. Hidden or missing services remain excluded even if this is true.",
            "example": true
          },
          "pinnedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "UTC time when the pin was recorded, or null when unpinned.",
            "example": "2026-10-25T12:00:00Z"
          }
        },
        "description": "A grouped catalog entry combining observed resources with gateway-owned display settings, visibility, and pin state. Only entries with pinned=true and status=live appear on the homepage.",
        "example": {
          "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
          "source": {
            "kind": "container",
            "id": "atlas"
          },
          "resource": {
            "kind": "container",
            "name": "grafana"
          },
          "displayName": "Grafana",
          "description": "Metrics and dashboards",
          "metadata": {
            "fixture": "synthetic"
          },
          "endpoints": [
            {
              "name": "https",
              "url": "https://grafana.example.test",
              "port": 443,
              "protocol": "HTTPS",
              "provenance": "synthetic"
            }
          ],
          "images": [],
          "observedAt": "2026-10-25T12:00:00Z",
          "status": "live",
          "missing": false,
          "icon": "selfhst:grafana",
          "address": "",
          "resources": [
            {
              "resource": {
                "kind": "container",
                "name": "grafana"
              },
              "endpoints": [
                {
                  "name": "https",
                  "url": "https://grafana.example.test",
                  "port": 443,
                  "protocol": "HTTPS",
                  "provenance": "synthetic"
                }
              ],
              "images": []
            }
          ],
          "pinned": true,
          "pinnedAt": "2026-10-25T12:00:00Z"
        }
      },
      "ServiceListResponse": {
        "type": "object",
        "required": [
          "services"
        ],
        "properties": {
          "services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceCandidate"
            },
            "description": "Service groups included by this endpoint; empty when the requested view has no entries.",
            "example": [
              {
                "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                "source": {
                  "kind": "container",
                  "id": "atlas"
                },
                "resource": {
                  "kind": "container",
                  "name": "grafana"
                },
                "displayName": "Grafana",
                "description": "Metrics and dashboards",
                "metadata": {
                  "fixture": "synthetic"
                },
                "endpoints": [
                  {
                    "name": "https",
                    "url": "https://grafana.example.test",
                    "port": 443,
                    "protocol": "HTTPS",
                    "provenance": "synthetic"
                  }
                ],
                "images": [],
                "observedAt": "2026-10-25T12:00:00Z",
                "status": "live",
                "missing": false,
                "icon": "selfhst:grafana",
                "address": "",
                "resources": [
                  {
                    "resource": {
                      "kind": "container",
                      "name": "grafana"
                    },
                    "endpoints": [
                      {
                        "name": "https",
                        "url": "https://grafana.example.test",
                        "port": 443,
                        "protocol": "HTTPS",
                        "provenance": "synthetic"
                      }
                    ],
                    "images": []
                  }
                ],
                "pinned": true,
                "pinnedAt": "2026-10-25T12:00:00Z"
              }
            ]
          }
        },
        "description": "Catalog service groups for the requested view. Staging includes every lifecycle state; the homepage endpoint restricts the list to pinned live groups.",
        "example": {
          "services": [
            {
              "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
              "source": {
                "kind": "container",
                "id": "atlas"
              },
              "resource": {
                "kind": "container",
                "name": "grafana"
              },
              "displayName": "Grafana",
              "description": "Metrics and dashboards",
              "metadata": {
                "fixture": "synthetic"
              },
              "endpoints": [
                {
                  "name": "https",
                  "url": "https://grafana.example.test",
                  "port": 443,
                  "protocol": "HTTPS",
                  "provenance": "synthetic"
                }
              ],
              "images": [],
              "observedAt": "2026-10-25T12:00:00Z",
              "status": "live",
              "missing": false,
              "icon": "selfhst:grafana",
              "address": "",
              "resources": [
                {
                  "resource": {
                    "kind": "container",
                    "name": "grafana"
                  },
                  "endpoints": [
                    {
                      "name": "https",
                      "url": "https://grafana.example.test",
                      "port": 443,
                      "protocol": "HTTPS",
                      "provenance": "synthetic"
                    }
                  ],
                  "images": []
                }
              ],
              "pinned": true,
              "pinnedAt": "2026-10-25T12:00:00Z"
            }
          ]
        }
      },
      "DiscoverySyncResponse": {
        "type": "object",
        "required": [
          "sources",
          "candidates"
        ],
        "properties": {
          "sources": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "description": "Number of source snapshots acknowledged by this operation.",
            "example": 1
          },
          "candidates": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "description": "Number of raw candidate observations acknowledged, before homepage selection.",
            "example": 1
          }
        },
        "description": "Counts acknowledged for the synchronization/import operation. candidates counts observations processed, not services added to the homepage.",
        "example": {
          "sources": 1,
          "candidates": 1
        }
      },
      "FederationSnapshot": {
        "type": "object",
        "required": [
          "source",
          "candidates",
          "observedAt"
        ],
        "properties": {
          "source": {
            "$ref": "#/components/schemas/SourceRef"
          },
          "candidates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FederatedCandidate"
            },
            "description": "Complete observed candidate set for the source. Empty marks prior observations missing.",
            "example": [
              {
                "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
                "source": {
                  "kind": "container",
                  "id": "atlas"
                },
                "resource": {
                  "kind": "container",
                  "name": "grafana"
                },
                "displayName": "Grafana",
                "description": "Metrics and dashboards",
                "metadata": {
                  "fixture": "synthetic"
                },
                "endpoints": [
                  {
                    "name": "https",
                    "url": "https://grafana.example.test",
                    "port": 443,
                    "protocol": "HTTPS",
                    "provenance": "synthetic"
                  }
                ],
                "images": [],
                "observedAt": "2026-10-25T12:00:00Z"
              }
            ]
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "description": "UTC observation watermark. Older or repeated snapshot times do not replace newer state.",
            "example": "2026-10-25T12:00:00Z"
          }
        },
        "description": "A complete discovery snapshot for one source. Absent observations become missing after an accepted newer snapshot; edits and pins remain gateway-owned. The empty candidates array is meaningful and must not be used for a failed scan.",
        "example": {
          "source": {
            "kind": "container",
            "id": "atlas"
          },
          "candidates": [
            {
              "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
              "source": {
                "kind": "container",
                "id": "atlas"
              },
              "resource": {
                "kind": "container",
                "name": "grafana"
              },
              "displayName": "Grafana",
              "description": "Metrics and dashboards",
              "metadata": {
                "fixture": "synthetic"
              },
              "endpoints": [
                {
                  "name": "https",
                  "url": "https://grafana.example.test",
                  "port": 443,
                  "protocol": "HTTPS",
                  "provenance": "synthetic"
                }
              ],
              "images": [],
              "observedAt": "2026-10-25T12:00:00Z"
            }
          ],
          "observedAt": "2026-10-25T12:00:00Z"
        }
      },
      "FederatedCandidate": {
        "type": "object",
        "required": [
          "id",
          "source",
          "resource",
          "displayName",
          "description",
          "metadata",
          "endpoints",
          "images",
          "observedAt"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Deterministic SHA-256 of the length-prefixed source and resource identity described on this schema.",
            "example": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14"
          },
          "source": {
            "$ref": "#/components/schemas/SourceRef"
          },
          "resource": {
            "$ref": "#/components/schemas/ResourceRef"
          },
          "displayName": {
            "type": "string",
            "description": "Discovered name before gateway-owned display overrides.",
            "example": "Grafana"
          },
          "description": {
            "type": "string",
            "description": "Description emitted by the source adapter.",
            "example": "Metrics and dashboards"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "String metadata emitted by this source adapter.",
            "example": {
              "fixture": "synthetic"
            }
          },
          "endpoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceEndpoint"
            },
            "description": "Observed addresses and port evidence to import.",
            "example": [
              {
                "name": "https",
                "url": "https://grafana.example.test",
                "port": 443,
                "protocol": "HTTPS",
                "provenance": "synthetic"
              }
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Container image references reported by discovery.",
            "example": []
          },
          "observedAt": {
            "type": "string",
            "format": "date-time",
            "description": "UTC time this resource was observed by the source.",
            "example": "2026-10-25T12:00:00Z"
          }
        },
        "description": "One raw observation in a complete source snapshot. The ID is SHA-256 of the concatenation of five length-prefixed UTF-8 strings: source.kind, source.id, resource.kind, resource.namespace or empty, and resource.name. Each trimmed string is encoded as its byte length in decimal, then a colon, then its bytes. Prefer the agent implementation over constructing IDs by hand. Do not include gateway pin or edit state.",
        "example": {
          "id": "57dc88a4d1a5dec8a34e00cc6ff3683bd1b6343cd32f573356a0c6fb07161f14",
          "source": {
            "kind": "container",
            "id": "atlas"
          },
          "resource": {
            "kind": "container",
            "name": "grafana"
          },
          "displayName": "Grafana",
          "description": "Metrics and dashboards",
          "metadata": {
            "fixture": "synthetic"
          },
          "endpoints": [
            {
              "name": "https",
              "url": "https://grafana.example.test",
              "port": 443,
              "protocol": "HTTPS",
              "provenance": "synthetic"
            }
          ],
          "images": [],
          "observedAt": "2026-10-25T12:00:00Z"
        }
      },
      "ThemeColor": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "space",
          "channels",
          "alpha"
        ],
        "properties": {
          "space": {
            "type": "string",
            "enum": [
              "srgb",
              "oklch"
            ],
            "example": "srgb"
          },
          "channels": {
            "type": "array",
            "minItems": 3,
            "maxItems": 3,
            "items": {
              "type": "number"
            },
            "description": "sRGB channels 0..1; OKLCH L 0..1, C 0..0.5, hue 0..<360. All finite."
          },
          "alpha": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "example": 1
          }
        },
        "description": "Finite literal color with three channels and explicit alpha. No CSS expressions or palette aliases."
      },
      "ThemeFontRef": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "source",
          "id"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "system",
              "google",
              "bundled",
              "upload"
            ],
            "example": "system"
          },
          "id": {
            "type": "string",
            "maxLength": 200,
            "example": "stack-58751021b6049b7de349355e"
          }
        },
        "description": "Stable font source and identity. Uploaded IDs reference immutable file bytes."
      },
      "ThemeTypography": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "title",
          "body"
        ],
        "properties": {
          "title": {
            "$ref": "#/components/schemas/ThemeFontRef"
          },
          "body": {
            "$ref": "#/components/schemas/ThemeFontRef"
          }
        },
        "description": "Independent title and body font choices. Variable fonts use default axis values."
      },
      "ThemeProvenance": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "presetKey",
          "goshtosoVersion",
          "catalogRevision"
        ],
        "properties": {
          "presetKey": {
            "type": "string",
            "example": "goshtoso"
          },
          "goshtosoVersion": {
            "type": "string",
            "example": "catalog:ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
          },
          "catalogRevision": {
            "type": "string",
            "example": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
          }
        },
        "description": "Origin of a materialized snapshot. These fields establish no live preset inheritance."
      },
      "ThemeDefinition": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tokens",
          "typography",
          "radiusRem",
          "provenance"
        ],
        "properties": {
          "schemaVersion": {
            "type": "integer",
            "enum": [
              1
            ],
            "example": 1
          },
          "tokens": {
            "type": "object",
            "maxProperties": 256,
            "additionalProperties": {
              "$ref": "#/components/schemas/ThemeColor"
            },
            "description": "Complete installed token registry. Literal values, no CSS or palette inheritance."
          },
          "typography": {
            "$ref": "#/components/schemas/ThemeTypography"
          },
          "radiusRem": {
            "type": "number",
            "minimum": 0,
            "maximum": 4,
            "example": 0.5
          },
          "provenance": {
            "$ref": "#/components/schemas/ThemeProvenance"
          }
        },
        "x-go-type": "themes.Definition",
        "x-go-type-import": {
          "path": "github.com/araihu/goshtoso/themes",
          "name": "themes"
        },
        "description": "Complete snapshot, at most 64 KiB JSON. Unknown fields and incomplete token sets are rejected."
      },
      "ThemeDraft": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "definition"
        ],
        "properties": {
          "brandLogoId": {
            "type": "string",
            "maxLength": 200,
            "example": "upload:LOGO",
            "description": "Uploaded logo reference. Omit from a replacement draft to preserve the saved logo; empty restores the Balemoh logo."
          },
          "brandIconId": {
            "type": "string",
            "maxLength": 200,
            "example": "upload:EXAMPLE",
            "description": "Uploaded app icon/favicon. Omit to preserve the saved icon; empty restores the Balemoh icon."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "example": "Ocean"
          },
          "definition": {
            "$ref": "#/components/schemas/ThemeDefinition"
          }
        },
        "description": "Complete named replacement draft. Applied only by an atomic presentation Save."
      },
      "PresentationSelection": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "kind"
        ],
        "properties": {
          "brandLogoId": {
            "type": "string",
            "maxLength": 200,
            "example": "upload:LOGO",
            "description": "Logo image for newCustom only. Empty selects the Balemoh logo; omitting this field retains the legacy shared icon behavior. Existing custom selections use their saved logo."
          },
          "brandIconId": {
            "type": "string",
            "maxLength": 200,
            "example": "upload:EXAMPLE",
            "description": "Uploaded app icon/favicon for newCustom only. Existing custom selections use their saved branding."
          },
          "kind": {
            "type": "string",
            "enum": [
              "builtin",
              "custom",
              "newCustom"
            ],
            "example": "builtin"
          },
          "key": {
            "type": "string",
            "example": "goshtoso"
          },
          "id": {
            "type": "string"
          },
          "expectedCatalogRevision": {
            "type": "string",
            "example": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
          },
          "expectedThemeRevision": {
            "$ref": "#/components/schemas/PresentationRevision"
          },
          "name": {
            "type": "string"
          },
          "definition": {
            "$ref": "#/components/schemas/ThemeDefinition"
          },
          "draft": {
            "$ref": "#/components/schemas/ThemeDraft"
          }
        },
        "description": "Exactly one form: builtin has key and expectedCatalogRevision; custom has id, expectedThemeRevision, optional draft; newCustom has fresh theme:UUID id, name, definition, expectedCatalogRevision. Other form fields are rejected. Read responses contain identity only, and expectedThemeRevision for the active custom theme."
      },
      "PresentationSettings": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "revision",
          "colorMode",
          "selection"
        ],
        "properties": {
          "revision": {
            "$ref": "#/components/schemas/PresentationRevision"
          },
          "colorMode": {
            "type": "string",
            "enum": [
              "system",
              "light",
              "dark"
            ],
            "example": "system"
          },
          "selection": {
            "$ref": "#/components/schemas/PresentationSelection"
          }
        },
        "description": "Instance-wide theme identity and color mode with a decimal settings revision."
      },
      "PresentationState": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "settings",
          "catalogRevision",
          "definition"
        ],
        "properties": {
          "brandLogoId": {
            "type": "string",
            "maxLength": 200,
            "example": "upload:LOGO",
            "description": "Independent logo reference of the active custom theme; omitted when its original Balemoh logo is selected."
          },
          "brandIconId": {
            "type": "string",
            "maxLength": 200,
            "example": "upload:EXAMPLE",
            "description": "App icon/favicon reference of the active custom theme; omitted for the Balemoh default."
          },
          "settings": {
            "example": {
              "revision": "0",
              "colorMode": "system",
              "selection": {
                "kind": "builtin",
                "key": "goshtoso"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/PresentationSettings"
              }
            ]
          },
          "catalogRevision": {
            "type": "string",
            "example": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
          },
          "definition": {
            "$ref": "#/components/schemas/ThemeDefinition"
          }
        },
        "description": "Authoritative settings and the complete currently selected definition. Storage failure returns 503, never empty defaults."
      },
      "PresentationSave": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "commandId",
          "expectedSettingsRevision",
          "colorMode",
          "selection"
        ],
        "properties": {
          "commandId": {
            "type": "string",
            "format": "uuid",
            "example": "11111111-1111-4111-8111-111111111111"
          },
          "expectedSettingsRevision": {
            "$ref": "#/components/schemas/PresentationRevision"
          },
          "colorMode": {
            "type": "string",
            "enum": [
              "system",
              "light",
              "dark"
            ],
            "example": "dark"
          },
          "selection": {
            "$ref": "#/components/schemas/PresentationSelection"
          }
        },
        "description": "Client-identified atomic Save. Preserve command and resource IDs when retrying an unconfirmed response."
      },
      "PresentationReceipt": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "commandId",
          "settings"
        ],
        "properties": {
          "commandId": {
            "type": "string",
            "format": "uuid",
            "example": "11111111-1111-4111-8111-111111111111"
          },
          "settings": {
            "example": {
              "revision": "1",
              "colorMode": "dark",
              "selection": {
                "kind": "builtin",
                "key": "goshtoso"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/PresentationSettings"
              }
            ]
          },
          "themeRevision": {
            "$ref": "#/components/schemas/PresentationRevision"
          }
        },
        "description": "Committed result of a successful Save or its immediate exact replay."
      },
      "CustomTheme": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "revision",
          "definition"
        ],
        "properties": {
          "brandLogoId": {
            "type": "string",
            "maxLength": 200,
            "example": "upload:LOGO",
            "description": "Pinned uploaded logo for this custom theme, independent of the app icon and favicon."
          },
          "brandIconId": {
            "type": "string",
            "maxLength": 200,
            "example": "upload:EXAMPLE",
            "description": "Pinned uploaded app icon and favicon."
          },
          "id": {
            "type": "string",
            "example": "theme:11111111-1111-4111-8111-111111111111"
          },
          "name": {
            "type": "string",
            "example": "Ocean"
          },
          "revision": {
            "$ref": "#/components/schemas/PresentationRevision"
          },
          "definition": {
            "$ref": "#/components/schemas/ThemeDefinition"
          }
        },
        "description": "Named independent snapshot with stable theme:UUID identity and optimistic revision."
      },
      "BuiltinTheme": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "key",
          "label",
          "definition"
        ],
        "properties": {
          "key": {
            "type": "string",
            "example": "goshtoso"
          },
          "label": {
            "type": "string",
            "example": "Goshtoso"
          },
          "definition": {
            "$ref": "#/components/schemas/ThemeDefinition"
          }
        },
        "description": "One immutable preset supplied by the installed Goshtoso catalog."
      },
      "ThemeCatalog": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "catalogRevision",
          "builtins",
          "custom"
        ],
        "properties": {
          "catalogRevision": {
            "type": "string",
            "example": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
          },
          "builtins": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BuiltinTheme"
            },
            "example": [
              {
                "key": "goshtoso",
                "label": "Goshtoso",
                "definition": {
                  "schemaVersion": 1,
                  "tokens": {
                    "backdrop": {
                      "space": "srgb",
                      "channels": [
                        0,
                        0,
                        0
                      ],
                      "alpha": 1
                    },
                    "backdrop-surface": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "control-outline": {
                      "space": "srgb",
                      "channels": [
                        0.47843137254901963,
                        0.5294117647058824,
                        0.5882352941176471
                      ],
                      "alpha": 1
                    },
                    "control-outline-dark": {
                      "space": "srgb",
                      "channels": [
                        0.44313725490196076,
                        0.5137254901960784,
                        0.592156862745098
                      ],
                      "alpha": 1
                    },
                    "danger": {
                      "space": "srgb",
                      "channels": [
                        0.8627450980392157,
                        0.14901960784313725,
                        0.14901960784313725
                      ],
                      "alpha": 1
                    },
                    "danger-action": {
                      "space": "srgb",
                      "channels": [
                        0.5301960784313725,
                        0.1349019607843137,
                        0.1568627450980392
                      ],
                      "alpha": 1
                    },
                    "danger-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.9176470588235295,
                        0.4894117647058824,
                        0.4894117647058824
                      ],
                      "alpha": 1
                    },
                    "danger-text": {
                      "space": "srgb",
                      "channels": [
                        0.15607843137254904,
                        0.11901960784313725,
                        0.16568627450980394
                      ],
                      "alpha": 1
                    },
                    "danger-text-dark": {
                      "space": "srgb",
                      "channels": [
                        0.9794117647058823,
                        0.8723529411764706,
                        0.8723529411764706
                      ],
                      "alpha": 1
                    },
                    "info": {
                      "space": "srgb",
                      "channels": [
                        0.058823529411764705,
                        0.4627450980392157,
                        0.43137254901960786
                      ],
                      "alpha": 1
                    },
                    "info-action": {
                      "space": "srgb",
                      "channels": [
                        0.04784313725490196,
                        0.32313725490196077,
                        0.3262745098039216
                      ],
                      "alpha": 1
                    },
                    "info-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.43529411764705883,
                        0.6776470588235295,
                        0.6588235294117647
                      ],
                      "alpha": 1
                    },
                    "info-text": {
                      "space": "srgb",
                      "channels": [
                        0.035490196078431374,
                        0.16607843137254902,
                        0.2080392156862745
                      ],
                      "alpha": 1
                    },
                    "info-text-dark": {
                      "space": "srgb",
                      "channels": [
                        0.8588235294117647,
                        0.9194117647058824,
                        0.9147058823529411
                      ],
                      "alpha": 1
                    },
                    "on-danger": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-danger-action": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-danger-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "on-info": {
                      "space": "srgb",
                      "channels": [
                        0.9607843137254902,
                        0.9882352941176471,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-info-action": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-info-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "on-primary": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-primary-dark": {
                      "space": "srgb",
                      "channels": [
                        0.023529411764705882,
                        0.08235294117647059,
                        0.11764705882352941
                      ],
                      "alpha": 1
                    },
                    "on-secondary": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-secondary-dark": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "on-success": {
                      "space": "srgb",
                      "channels": [
                        0.9411764705882353,
                        0.9921568627450981,
                        0.9568627450980393
                      ],
                      "alpha": 1
                    },
                    "on-success-action": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-success-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "on-surface": {
                      "space": "srgb",
                      "channels": [
                        0.22745098039215686,
                        0.29411764705882354,
                        0.37254901960784315
                      ],
                      "alpha": 1
                    },
                    "on-surface-dark": {
                      "space": "srgb",
                      "channels": [
                        0.7529411764705882,
                        0.796078431372549,
                        0.8470588235294118
                      ],
                      "alpha": 1
                    },
                    "on-surface-dark-muted": {
                      "space": "srgb",
                      "channels": [
                        0.6511764705882352,
                        0.6913725490196078,
                        0.7388235294117647
                      ],
                      "alpha": 1
                    },
                    "on-surface-dark-strong": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-surface-muted": {
                      "space": "srgb",
                      "channels": [
                        0.3433333333333333,
                        0.4,
                        0.4666666666666667
                      ],
                      "alpha": 1
                    },
                    "on-surface-strong": {
                      "space": "srgb",
                      "channels": [
                        0.03137254901960784,
                        0.11372549019607843,
                        0.16862745098039217
                      ],
                      "alpha": 1
                    },
                    "on-warning": {
                      "space": "srgb",
                      "channels": [
                        0.12941176470588237,
                        0.08627450980392157,
                        0.023529411764705882
                      ],
                      "alpha": 1
                    },
                    "on-warning-action": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "on-warning-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "outline": {
                      "space": "srgb",
                      "channels": [
                        0.7529411764705882,
                        0.796078431372549,
                        0.8470588235294118
                      ],
                      "alpha": 1
                    },
                    "outline-dark": {
                      "space": "srgb",
                      "channels": [
                        0.22745098039215686,
                        0.29411764705882354,
                        0.37254901960784315
                      ],
                      "alpha": 1
                    },
                    "outline-dark-strong": {
                      "space": "srgb",
                      "channels": [
                        0.6274509803921569,
                        0.6941176470588235,
                        0.7725490196078432
                      ],
                      "alpha": 1
                    },
                    "outline-strong": {
                      "space": "srgb",
                      "channels": [
                        0.22745098039215686,
                        0.29411764705882354,
                        0.37254901960784315
                      ],
                      "alpha": 1
                    },
                    "primary": {
                      "space": "srgb",
                      "channels": [
                        0.12941176470588237,
                        0.4470588235294118,
                        0.6392156862745098
                      ],
                      "alpha": 1
                    },
                    "primary-dark": {
                      "space": "srgb",
                      "channels": [
                        0.23137254901960785,
                        0.807843137254902,
                        0.9686274509803922
                      ],
                      "alpha": 1
                    },
                    "secondary": {
                      "space": "srgb",
                      "channels": [
                        0.29411764705882354,
                        0.49019607843137253,
                        0.10980392156862745
                      ],
                      "alpha": 1
                    },
                    "secondary-dark": {
                      "space": "srgb",
                      "channels": [
                        0.8274509803921568,
                        0.8431372549019608,
                        0.3568627450980392
                      ],
                      "alpha": 1
                    },
                    "success": {
                      "space": "srgb",
                      "channels": [
                        0.01568627450980392,
                        0.47058823529411764,
                        0.3411764705882353
                      ],
                      "alpha": 1
                    },
                    "success-action": {
                      "space": "srgb",
                      "channels": [
                        0.02196078431372549,
                        0.32784313725490194,
                        0.27215686274509804
                      ],
                      "alpha": 1
                    },
                    "success-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.40941176470588236,
                        0.6823529411764706,
                        0.6047058823529412
                      ],
                      "alpha": 1
                    },
                    "success-text": {
                      "space": "srgb",
                      "channels": [
                        0.029019607843137254,
                        0.16725490196078432,
                        0.19450980392156864
                      ],
                      "alpha": 1
                    },
                    "success-text-dark": {
                      "space": "srgb",
                      "channels": [
                        0.8523529411764705,
                        0.9205882352941176,
                        0.9011764705882352
                      ],
                      "alpha": 1
                    },
                    "surface": {
                      "space": "srgb",
                      "channels": [
                        1,
                        1,
                        1
                      ],
                      "alpha": 1
                    },
                    "surface-alt": {
                      "space": "srgb",
                      "channels": [
                        0.9176470588235294,
                        0.9568627450980393,
                        0.984313725490196
                      ],
                      "alpha": 1
                    },
                    "surface-dark": {
                      "space": "srgb",
                      "channels": [
                        0.07450980392156863,
                        0.09803921568627451,
                        0.12549019607843137
                      ],
                      "alpha": 1
                    },
                    "surface-dark-alt": {
                      "space": "srgb",
                      "channels": [
                        0.14901960784313725,
                        0.2196078431372549,
                        0.2784313725490196
                      ],
                      "alpha": 1
                    },
                    "warning": {
                      "space": "srgb",
                      "channels": [
                        0.9607843137254902,
                        0.6196078431372549,
                        0.043137254901960784
                      ],
                      "alpha": 1
                    },
                    "warning-action": {
                      "space": "srgb",
                      "channels": [
                        0.5890196078431372,
                        0.4172549019607843,
                        0.09333333333333334
                      ],
                      "alpha": 1
                    },
                    "warning-action-dark": {
                      "space": "srgb",
                      "channels": [
                        0.9764705882352941,
                        0.7717647058823529,
                        0.4258823529411765
                      ],
                      "alpha": 1
                    },
                    "warning-text": {
                      "space": "srgb",
                      "channels": [
                        0.17078431372549022,
                        0.1896078431372549,
                        0.14980392156862746
                      ],
                      "alpha": 1
                    },
                    "warning-text-dark": {
                      "space": "srgb",
                      "channels": [
                        0.9941176470588236,
                        0.9429411764705882,
                        0.8564705882352941
                      ],
                      "alpha": 1
                    }
                  },
                  "typography": {
                    "title": {
                      "source": "system",
                      "id": "stack-8a430142f47a470b2f0755a4"
                    },
                    "body": {
                      "source": "system",
                      "id": "stack-58751021b6049b7de349355e"
                    }
                  },
                  "radiusRem": 0.5,
                  "provenance": {
                    "presetKey": "goshtoso",
                    "goshtosoVersion": "catalog:ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b",
                    "catalogRevision": "ef0a8c432f910d25d8e9e8b09948fbdac35df0aa5679a7238ed09a2f02738c8b"
                  }
                }
              }
            ]
          },
          "custom": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomTheme"
            },
            "example": []
          }
        },
        "description": "Installed preset catalog and saved custom themes. The example shows one preset entry; GET returns every installed preset."
      },
      "ThemeCopyFrom": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "expectedRevision"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "theme:11111111-1111-4111-8111-111111111111"
          },
          "expectedRevision": {
            "$ref": "#/components/schemas/PresentationRevision"
          }
        },
        "description": "Copy a saved custom snapshot at an explicit revision. Later source edits do not change the copy."
      },
      "ThemeCreate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "brandLogoId": {
            "type": "string",
            "maxLength": 200,
            "example": "upload:LOGO",
            "description": "Logo reference for an explicit definition; empty uses the Balemoh logo. Omission retains legacy shared icon behavior. A copyFrom request inherits both source images."
          },
          "brandIconId": {
            "type": "string",
            "maxLength": 200,
            "example": "upload:EXAMPLE",
            "description": "Image reference for an explicit definition. A copyFrom request inherits the source theme image."
          },
          "id": {
            "type": "string",
            "example": "theme:11111111-1111-4111-8111-111111111111"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "example": "Ocean"
          },
          "definition": {
            "$ref": "#/components/schemas/ThemeDefinition"
          },
          "copyFrom": {
            "$ref": "#/components/schemas/ThemeCopyFrom"
          }
        },
        "description": "Supply exactly one of definition or copyFrom. Creates inactive theme. Same ID and creation payload returns 200; changed payload conflicts. Maximum 128 saved themes."
      },
      "ThemeRename": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "expectedRevision"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "example": "Ocean renamed"
          },
          "expectedRevision": {
            "$ref": "#/components/schemas/PresentationRevision"
          }
        },
        "description": "Metadata-only name change guarded by the current theme revision. Selection and definition stay unchanged."
      },
      "UploadedFont": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "family",
          "weight",
          "style",
          "variable",
          "format",
          "mime",
          "byteLength",
          "digest",
          "revision",
          "usedBy"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "font:11111111-1111-4111-8111-111111111111"
          },
          "name": {
            "type": "string",
            "example": "Go Regular"
          },
          "family": {
            "type": "string",
            "example": "Go"
          },
          "weight": {
            "type": "string",
            "example": "400"
          },
          "style": {
            "type": "string",
            "example": "normal"
          },
          "variable": {
            "type": "boolean",
            "example": false
          },
          "format": {
            "type": "string",
            "example": "truetype"
          },
          "mime": {
            "type": "string",
            "example": "font/ttf"
          },
          "byteLength": {
            "type": "integer",
            "maximum": 10485760,
            "example": 148672
          },
          "digest": {
            "type": "string",
            "example": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
          },
          "revision": {
            "$ref": "#/components/schemas/PresentationRevision"
          },
          "usedBy": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": []
          }
        },
        "description": "Metadata derived from uploaded bytes. Each file is independent, including variable fonts. Lists omit file bytes."
      },
      "PresentationConflict": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "kind"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "settings",
              "theme",
              "font",
              "catalog",
              "command"
            ],
            "example": "settings"
          },
          "id": {
            "type": "string"
          },
          "currentRevision": {
            "type": "string",
            "example": "2"
          }
        },
        "description": "Resource and current revision explaining a rejected command. Never silently replace the draft revision."
      },
      "PresentationRevision": {
        "type": "string",
        "pattern": "^(0|[1-9][0-9]*)$",
        "description": "Decimal optimistic revision. Copy it from the corresponding read response. Missing revisions never mean overwrite.",
        "example": "1",
        "x-go-type": "string"
      }
    }
  }
}