{"schemaVersion":1,"catalogId":"balemoh","title":"Balemoh","branding":{"displayName":"Balemoh","logoSrc":"/brand-assets/balemoh-3c49d7d9fa2b.svg","logoAlt":"Balemoh","logoHomeHref":"","faviconHref":"/brand-assets/balemoh-3c49d7d9fa2b.svg"},"defaultDocumentKey":"public-next","profileId":"strict-v1","searchChild":"search/directory.json","documents":[{"publication":{"api":"public","audience":"public","channel":"branch","repositoryURL":"https://github.com/araihu/balemoh","ref":"refs/heads/main","commit":"6455744557a447f2381f3eecd0a601f60e945a5e","sourcePath":"api/openapi.yaml"},"key":"public-next","sourcePath":"public-next.json","title":"Balemoh API","apiVersion":"0.1.0","branding":{"displayName":"","logoSrc":"","logoAlt":"","logoHomeHref":"","faviconHref":""},"overview":{"anchor":"overview","href":"?selected=overview#overview","headingId":"overview-heading","heading":"Balemoh API","headingLevel":2,"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.","termsOfService":"","specDownloadFilename":"public-next.json","contact":{"name":"Balemoh maintainers","url":"https://github.com/araihu/balemoh/issues","email":""},"license":{"name":"","url":"","identifier":""},"servers":[{"ordinal":0,"id":"server-8fe699e46f6967e71340886f10694b5d6662f3a1fe7da11cf78e5ec79f305db6","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.","variables":[]}]},"sourceChild":"sources/public-next.json","schemaNodeShards":[{"path":"schema-nodes/public-next/f1a8265a0a136f72c267479c8c5582e2771e5b4cc22afc7c4a738be40f2afe15.json","firstOrdinal":0,"lastOrdinal":336,"records":337,"length":333089,"sha256":"f1a8265a0a136f72c267479c8c5582e2771e5b4cc22afc7c4a738be40f2afe15"}],"operations":[{"detailId":"detail-sha256-53fc5ec50b5fcfaea8d9ae0dbe6f8b6db220ec106271a01b3ea53145292be08b","operationId":"GetDashboard","method":"GET","path":"/api/v1/dashboard","title":"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.","href":"documents/public-next/?selected=detail-sha256-53fc5ec50b5fcfaea8d9ae0dbe6f8b6db220ec106271a01b3ea53145292be08b#detail-sha256-53fc5ec50b5fcfaea8d9ae0dbe6f8b6db220ec106271a01b3ea53145292be08b","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Dashboard"],"facets":[]},{"detailId":"detail-sha256-1a465330619d43c3971917700546c6ac4d6f9a6b045b702b54cc8a9faccd380f","operationId":"SetDashboardSelection","method":"PUT","path":"/api/v1/dashboard/widgets/{sourceKind}/{sourceId}","title":"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.","href":"documents/public-next/?selected=detail-sha256-1a465330619d43c3971917700546c6ac4d6f9a6b045b702b54cc8a9faccd380f#detail-sha256-1a465330619d43c3971917700546c6ac4d6f9a6b045b702b54cc8a9faccd380f","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Dashboard"],"facets":[]},{"detailId":"detail-sha256-1a9db26773664306044877e6647de060c1e1d29f18747d236fb4cab64793b96c","operationId":"SyncDiscovery","method":"POST","path":"/api/v1/discovery/sync","title":"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.","href":"documents/public-next/?selected=detail-sha256-1a9db26773664306044877e6647de060c1e1d29f18747d236fb4cab64793b96c#detail-sha256-1a9db26773664306044877e6647de060c1e1d29f18747d236fb4cab64793b96c","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Discovery"],"facets":[]},{"detailId":"detail-sha256-8132d16196af77862e1dd950ec6e50961c35c2f7939b43b758e0df79a95d5776","operationId":"ImportFederationSnapshot","method":"POST","path":"/api/v1/federation/snapshots","title":"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.","href":"documents/public-next/?selected=detail-sha256-8132d16196af77862e1dd950ec6e50961c35c2f7939b43b758e0df79a95d5776#detail-sha256-8132d16196af77862e1dd950ec6e50961c35c2f7939b43b758e0df79a95d5776","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Federation"],"facets":[]},{"detailId":"detail-sha256-2ef28c95a6511786e1fee16951d1f99c7008e562873dbf6c0a95108e17a4208b","operationId":"ImportTelemetry","method":"POST","path":"/api/v1/federation/telemetry","title":"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.","href":"documents/public-next/?selected=detail-sha256-2ef28c95a6511786e1fee16951d1f99c7008e562873dbf6c0a95108e17a4208b#detail-sha256-2ef28c95a6511786e1fee16951d1f99c7008e562873dbf6c0a95108e17a4208b","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Federation"],"facets":[]},{"detailId":"detail-sha256-7d0c29c8c8059e8a776269fcbd375f40b3828c9983f266626b65d9bd95786aeb","operationId":"ListFonts","method":"GET","path":"/api/v1/fonts","title":"List uploaded font metadata without file bytes","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.","href":"documents/public-next/?selected=detail-sha256-7d0c29c8c8059e8a776269fcbd375f40b3828c9983f266626b65d9bd95786aeb#detail-sha256-7d0c29c8c8059e8a776269fcbd375f40b3828c9983f266626b65d9bd95786aeb","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Presentation"],"facets":[]},{"detailId":"detail-sha256-3a9a853cc6365fca5e5b12eee2bbb0aa6535359b03c24acec8df990f89f80116","operationId":"UploadFont","method":"POST","path":"/api/v1/fonts","title":"Upload a new immutable font reference","description":"WOFF2, WOFF, TTF, OTF including variable fonts at default axes. Raw file \u003c=10 MiB. Multipart total \u003c=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.","href":"documents/public-next/?selected=detail-sha256-3a9a853cc6365fca5e5b12eee2bbb0aa6535359b03c24acec8df990f89f80116#detail-sha256-3a9a853cc6365fca5e5b12eee2bbb0aa6535359b03c24acec8df990f89f80116","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Presentation"],"facets":[]},{"detailId":"detail-sha256-90c07c12d0b2542b592c5e6b8460d60609f0d8ed07a6f1be84d00182a58e1301","operationId":"DeleteFont","method":"DELETE","path":"/api/v1/fonts/{fontID}","title":"Delete an uploaded font with no saved references","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.","href":"documents/public-next/?selected=detail-sha256-90c07c12d0b2542b592c5e6b8460d60609f0d8ed07a6f1be84d00182a58e1301#detail-sha256-90c07c12d0b2542b592c5e6b8460d60609f0d8ed07a6f1be84d00182a58e1301","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Presentation"],"facets":[]},{"detailId":"detail-sha256-b3c69448f7a073509611d600c63839605528cfd9d50ac5200917d504fc694bc4","operationId":"GetFontFile","method":"GET","path":"/api/v1/fonts/{fontID}/file","title":"Read original immutable font bytes","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.","href":"documents/public-next/?selected=detail-sha256-b3c69448f7a073509611d600c63839605528cfd9d50ac5200917d504fc694bc4#detail-sha256-b3c69448f7a073509611d600c63839605528cfd9d50ac5200917d504fc694bc4","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Presentation"],"facets":[]},{"detailId":"detail-sha256-76e1e5c645b3bc51b2f2d11a9a723ed7b981c44fdff5a764d76b1e70334d73b1","operationId":"GetHomepageServices","method":"GET","path":"/api/v1/homepage/services","title":"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.","href":"documents/public-next/?selected=detail-sha256-76e1e5c645b3bc51b2f2d11a9a723ed7b981c44fdff5a764d76b1e70334d73b1#detail-sha256-76e1e5c645b3bc51b2f2d11a9a723ed7b981c44fdff5a764d76b1e70334d73b1","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Services"],"facets":[]},{"detailId":"detail-sha256-d1672d670414db65004adc22abec32d6f128ae8f5525934caca1af6f471d4e5e","operationId":"GetHosts","method":"GET","path":"/api/v1/hosts","title":"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.","href":"documents/public-next/?selected=detail-sha256-d1672d670414db65004adc22abec32d6f128ae8f5525934caca1af6f471d4e5e#detail-sha256-d1672d670414db65004adc22abec32d6f128ae8f5525934caca1af6f471d4e5e","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Hosts"],"facets":[]},{"detailId":"detail-sha256-124b666a62c7784529b64646ce28bf7eb1e367e3c54c170c4f91958e21c68027","operationId":"GetHost","method":"GET","path":"/api/v1/hosts/{hostId}","title":"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.","href":"documents/public-next/?selected=detail-sha256-124b666a62c7784529b64646ce28bf7eb1e367e3c54c170c4f91958e21c68027#detail-sha256-124b666a62c7784529b64646ce28bf7eb1e367e3c54c170c4f91958e21c68027","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Hosts"],"facets":[]},{"detailId":"detail-sha256-60032f6cca5afe98009dfb1be1e1c50a867203e20eaa7751ada0874b3390ec65","operationId":"listIcons","method":"GET","path":"/api/v1/icons","title":"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.","href":"documents/public-next/?selected=detail-sha256-60032f6cca5afe98009dfb1be1e1c50a867203e20eaa7751ada0874b3390ec65#detail-sha256-60032f6cca5afe98009dfb1be1e1c50a867203e20eaa7751ada0874b3390ec65","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Icons"],"facets":[]},{"detailId":"detail-sha256-4340cdc7355341bffadaf2f525a9247bdaa6d4be9d660f5bb6320276d8b9844e","operationId":"uploadIcon","method":"POST","path":"/api/v1/icons","title":"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.","href":"documents/public-next/?selected=detail-sha256-4340cdc7355341bffadaf2f525a9247bdaa6d4be9d660f5bb6320276d8b9844e#detail-sha256-4340cdc7355341bffadaf2f525a9247bdaa6d4be9d660f5bb6320276d8b9844e","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Icons"],"facets":[]},{"detailId":"detail-sha256-ea063301559a53c6b9e6311dad270c6f2ab6d3da95922e9893afc5ec870e26fa","operationId":"deleteIcon","method":"DELETE","path":"/api/v1/icons/{iconID}","title":"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.","href":"documents/public-next/?selected=detail-sha256-ea063301559a53c6b9e6311dad270c6f2ab6d3da95922e9893afc5ec870e26fa#detail-sha256-ea063301559a53c6b9e6311dad270c6f2ab6d3da95922e9893afc5ec870e26fa","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Icons"],"facets":[]},{"detailId":"detail-sha256-340d96cfb9d3e0e7a6b47211dd3b5e4cd8320bba0f713960c3c75330375da1fe","operationId":"updateIcon","method":"PUT","path":"/api/v1/icons/{iconID}","title":"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.","href":"documents/public-next/?selected=detail-sha256-340d96cfb9d3e0e7a6b47211dd3b5e4cd8320bba0f713960c3c75330375da1fe#detail-sha256-340d96cfb9d3e0e7a6b47211dd3b5e4cd8320bba0f713960c3c75330375da1fe","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Icons"],"facets":[]},{"detailId":"detail-sha256-0bd677de39e194408c65c31710a7b6a42680ce81dddb716b7a9cfeda37314b45","operationId":"getIconImage","method":"GET","path":"/api/v1/icons/{iconID}/image","title":"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.","href":"documents/public-next/?selected=detail-sha256-0bd677de39e194408c65c31710a7b6a42680ce81dddb716b7a9cfeda37314b45#detail-sha256-0bd677de39e194408c65c31710a7b6a42680ce81dddb716b7a9cfeda37314b45","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Icons"],"facets":[]},{"detailId":"detail-sha256-cb579c864096ffd02734b1a629b4ce2766385e5abde8479b2d8c994e0169a1e6","operationId":"ClearNotifications","method":"DELETE","path":"/api/v1/notifications","title":"Clear all notifications","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.","href":"documents/public-next/?selected=detail-sha256-cb579c864096ffd02734b1a629b4ce2766385e5abde8479b2d8c994e0169a1e6#detail-sha256-cb579c864096ffd02734b1a629b4ce2766385e5abde8479b2d8c994e0169a1e6","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Notifications"],"facets":[]},{"detailId":"detail-sha256-b2b47fc45265351ccf6b8f4d009396ab0e4b62aeec6a81e8eabae515e4e1e6ac","operationId":"GetNotifications","method":"GET","path":"/api/v1/notifications","title":"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.","href":"documents/public-next/?selected=detail-sha256-b2b47fc45265351ccf6b8f4d009396ab0e4b62aeec6a81e8eabae515e4e1e6ac#detail-sha256-b2b47fc45265351ccf6b8f4d009396ab0e4b62aeec6a81e8eabae515e4e1e6ac","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Notifications"],"facets":[]},{"detailId":"detail-sha256-9aea8ecd8ae2ebcbedf9a97ced346e28ce46fcdbda8af09fc987e8fb855e6ab3","operationId":"PublishNotification","method":"POST","path":"/api/v1/notifications","title":"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.","href":"documents/public-next/?selected=detail-sha256-9aea8ecd8ae2ebcbedf9a97ced346e28ce46fcdbda8af09fc987e8fb855e6ab3#detail-sha256-9aea8ecd8ae2ebcbedf9a97ced346e28ce46fcdbda8af09fc987e8fb855e6ab3","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Notifications"],"facets":[]},{"detailId":"detail-sha256-a494a777510338b4b5802814a09770bdb38edd0eb7fbb6ecdda1a721999bed27","operationId":"DeleteWebPush","method":"DELETE","path":"/api/v1/notifications/push","title":"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.","href":"documents/public-next/?selected=detail-sha256-a494a777510338b4b5802814a09770bdb38edd0eb7fbb6ecdda1a721999bed27#detail-sha256-a494a777510338b4b5802814a09770bdb38edd0eb7fbb6ecdda1a721999bed27","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Notifications"],"facets":[]},{"detailId":"detail-sha256-72b8c77c5649c3ea619d0cd12c1342f5410c3d1feee3414e9ea57d5a2a9c42e1","operationId":"GetWebPushSettings","method":"GET","path":"/api/v1/notifications/push","title":"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.","href":"documents/public-next/?selected=detail-sha256-72b8c77c5649c3ea619d0cd12c1342f5410c3d1feee3414e9ea57d5a2a9c42e1#detail-sha256-72b8c77c5649c3ea619d0cd12c1342f5410c3d1feee3414e9ea57d5a2a9c42e1","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Notifications"],"facets":[]},{"detailId":"detail-sha256-da6f3fc61573a33701fc58c01c2683e641361689cee47415cbeeae669cc56b62","operationId":"RegisterWebPush","method":"POST","path":"/api/v1/notifications/push","title":"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.","href":"documents/public-next/?selected=detail-sha256-da6f3fc61573a33701fc58c01c2683e641361689cee47415cbeeae669cc56b62#detail-sha256-da6f3fc61573a33701fc58c01c2683e641361689cee47415cbeeae669cc56b62","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Notifications"],"facets":[]},{"detailId":"detail-sha256-fdbf8ab4a32b6d18bbd654e7466229d30caa87d83b1ca6716f6486d48a5dc7b7","operationId":"MarkAllNotificationsRead","method":"PUT","path":"/api/v1/notifications/read","title":"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.","href":"documents/public-next/?selected=detail-sha256-fdbf8ab4a32b6d18bbd654e7466229d30caa87d83b1ca6716f6486d48a5dc7b7#detail-sha256-fdbf8ab4a32b6d18bbd654e7466229d30caa87d83b1ca6716f6486d48a5dc7b7","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Notifications"],"facets":[]},{"detailId":"detail-sha256-2aaf1920e3d41857b5b0fd2e5ffc6f3f4cd6609926dbd66408bad7c0b1b944e4","operationId":"GetNotification","method":"GET","path":"/api/v1/notifications/{notificationId}","title":"Read a notification","description":"Read one retained notification by ID without changing its read state or opening its destination.","href":"documents/public-next/?selected=detail-sha256-2aaf1920e3d41857b5b0fd2e5ffc6f3f4cd6609926dbd66408bad7c0b1b944e4#detail-sha256-2aaf1920e3d41857b5b0fd2e5ffc6f3f4cd6609926dbd66408bad7c0b1b944e4","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Notifications"],"facets":[]},{"detailId":"detail-sha256-947b118de367fb109dd5e4f4eb333a6547ac32fbe546051035cc1e9ea6c191b2","operationId":"MarkNotificationRead","method":"PUT","path":"/api/v1/notifications/{notificationId}/read","title":"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.","href":"documents/public-next/?selected=detail-sha256-947b118de367fb109dd5e4f4eb333a6547ac32fbe546051035cc1e9ea6c191b2#detail-sha256-947b118de367fb109dd5e4f4eb333a6547ac32fbe546051035cc1e9ea6c191b2","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Notifications"],"facets":[]},{"detailId":"detail-sha256-7631518763c5767beeca7972c080e336dca1d0692ebef0474ea3eba4cad3e64c","operationId":"GetPluginWidgets","method":"GET","path":"/api/v1/plugin-widgets","title":"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.","href":"documents/public-next/?selected=detail-sha256-7631518763c5767beeca7972c080e336dca1d0692ebef0474ea3eba4cad3e64c#detail-sha256-7631518763c5767beeca7972c080e336dca1d0692ebef0474ea3eba4cad3e64c","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Plugins"],"facets":[]},{"detailId":"detail-sha256-0dce324db36270303559036b49719b9a9b785bb799be991de6443deb055fa95f","operationId":"DeletePluginWidget","method":"DELETE","path":"/api/v1/plugin-widgets/{placementId}","title":"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.","href":"documents/public-next/?selected=detail-sha256-0dce324db36270303559036b49719b9a9b785bb799be991de6443deb055fa95f#detail-sha256-0dce324db36270303559036b49719b9a9b785bb799be991de6443deb055fa95f","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Plugins"],"facets":[]},{"detailId":"detail-sha256-fe4fa72a542f0bfc9a37202f129db840ffae5339e4f6686546f953ab1d5b0613","operationId":"PutPluginWidget","method":"PUT","path":"/api/v1/plugin-widgets/{placementId}","title":"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.","href":"documents/public-next/?selected=detail-sha256-fe4fa72a542f0bfc9a37202f129db840ffae5339e4f6686546f953ab1d5b0613#detail-sha256-fe4fa72a542f0bfc9a37202f129db840ffae5339e4f6686546f953ab1d5b0613","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Plugins"],"facets":[]},{"detailId":"detail-sha256-297efdff898ef8941037830c9735cae8a7ba0b122fcadbdb49d4058edbb95096","operationId":"GetPlugins","method":"GET","path":"/api/v1/plugins","title":"List installed plugins","description":"Read local installation and connection metadata without calling plugin processes. Executable paths, configuration secrets and credentials are excluded.","href":"documents/public-next/?selected=detail-sha256-297efdff898ef8941037830c9735cae8a7ba0b122fcadbdb49d4058edbb95096#detail-sha256-297efdff898ef8941037830c9735cae8a7ba0b122fcadbdb49d4058edbb95096","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Plugins"],"facets":[]},{"detailId":"detail-sha256-5d3640f5a8c4e1043ece6470b41a6e87953b0e323a2438094446f37a8acb57ed","operationId":"QueryPlugin","method":"POST","path":"/api/v1/plugins/{pluginId}/connections/{connectionId}/queries/{queryId}","title":"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.","href":"documents/public-next/?selected=detail-sha256-5d3640f5a8c4e1043ece6470b41a6e87953b0e323a2438094446f37a8acb57ed#detail-sha256-5d3640f5a8c4e1043ece6470b41a6e87953b0e323a2438094446f37a8acb57ed","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Plugins"],"facets":[]},{"detailId":"detail-sha256-a4c38d3f23c3fdf968662a3e326d285bac0f3dccd111b591bf713f3b8c1b6fd0","operationId":"GetPresentation","method":"GET","path":"/api/v1/presentation","title":"Read global presentation and active snapshot","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.","href":"documents/public-next/?selected=detail-sha256-a4c38d3f23c3fdf968662a3e326d285bac0f3dccd111b591bf713f3b8c1b6fd0#detail-sha256-a4c38d3f23c3fdf968662a3e326d285bac0f3dccd111b591bf713f3b8c1b6fd0","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Presentation"],"facets":[]},{"detailId":"detail-sha256-5e595f51ed05719effe8de8bf9ee873082e9ca923014c0e5946c4f95909425a7","operationId":"SavePresentation","method":"PUT","path":"/api/v1/presentation","title":"Atomically save and activate presentation","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.","href":"documents/public-next/?selected=detail-sha256-5e595f51ed05719effe8de8bf9ee873082e9ca923014c0e5946c4f95909425a7#detail-sha256-5e595f51ed05719effe8de8bf9ee873082e9ca923014c0e5946c4f95909425a7","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Presentation"],"facets":[]},{"detailId":"detail-sha256-64d483a1a0a86919d1b4052a9a8c80250430624f9895137123add7e162282de2","operationId":"GetStagingServices","method":"GET","path":"/api/v1/staging/services","title":"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.","href":"documents/public-next/?selected=detail-sha256-64d483a1a0a86919d1b4052a9a8c80250430624f9895137123add7e162282de2#detail-sha256-64d483a1a0a86919d1b4052a9a8c80250430624f9895137123add7e162282de2","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Services"],"facets":[]},{"detailId":"detail-sha256-7ae591f51f1ff4eb7b33404b4547ae99d370e29279e33bd114eb5ea8ccff4eb6","operationId":"CreateManualService","method":"POST","path":"/api/v1/staging/services","title":"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.","href":"documents/public-next/?selected=detail-sha256-7ae591f51f1ff4eb7b33404b4547ae99d370e29279e33bd114eb5ea8ccff4eb6#detail-sha256-7ae591f51f1ff4eb7b33404b4547ae99d370e29279e33bd114eb5ea8ccff4eb6","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Services"],"facets":[]},{"detailId":"detail-sha256-6094fab8d407f21f9ff7f0eea1797accb2b8a3bdb18302a593fa297d49f00714","operationId":"EditStagingService","method":"PUT","path":"/api/v1/staging/services/{serviceId}","title":"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.","href":"documents/public-next/?selected=detail-sha256-6094fab8d407f21f9ff7f0eea1797accb2b8a3bdb18302a593fa297d49f00714#detail-sha256-6094fab8d407f21f9ff7f0eea1797accb2b8a3bdb18302a593fa297d49f00714","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Services"],"facets":[]},{"detailId":"detail-sha256-37b0296c7222649f368fa01f002dbcf90a8e796ef1d96502240a965300c12db9","operationId":"changeServiceLifecycle","method":"POST","path":"/api/v1/staging/services/{serviceId}/lifecycle","title":"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.","href":"documents/public-next/?selected=detail-sha256-37b0296c7222649f368fa01f002dbcf90a8e796ef1d96502240a965300c12db9#detail-sha256-37b0296c7222649f368fa01f002dbcf90a8e796ef1d96502240a965300c12db9","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Services"],"facets":[]},{"detailId":"detail-sha256-3647fe5dd81e5fb76f320ebb35e5edde8f247ebe10cbb77022791f132f057ae7","operationId":"UnpinStagingService","method":"DELETE","path":"/api/v1/staging/services/{serviceId}/pin","title":"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.","href":"documents/public-next/?selected=detail-sha256-3647fe5dd81e5fb76f320ebb35e5edde8f247ebe10cbb77022791f132f057ae7#detail-sha256-3647fe5dd81e5fb76f320ebb35e5edde8f247ebe10cbb77022791f132f057ae7","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Services"],"facets":[]},{"detailId":"detail-sha256-f6de9d1ff13e377a98e25f77d185262118dad6ee2d0ed474c5863216fc663ef6","operationId":"PinStagingService","method":"POST","path":"/api/v1/staging/services/{serviceId}/pin","title":"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.","href":"documents/public-next/?selected=detail-sha256-f6de9d1ff13e377a98e25f77d185262118dad6ee2d0ed474c5863216fc663ef6#detail-sha256-f6de9d1ff13e377a98e25f77d185262118dad6ee2d0ed474c5863216fc663ef6","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Services"],"facets":[]},{"detailId":"detail-sha256-d82d803077e7f1c932a6fc076205a0170637e32583c8fa2598812a6865964a3a","operationId":"ListThemes","method":"GET","path":"/api/v1/themes","title":"Read every installed preset and custom theme","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.","href":"documents/public-next/?selected=detail-sha256-d82d803077e7f1c932a6fc076205a0170637e32583c8fa2598812a6865964a3a#detail-sha256-d82d803077e7f1c932a6fc076205a0170637e32583c8fa2598812a6865964a3a","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Presentation"],"facets":[]},{"detailId":"detail-sha256-fea7696584960d803b902ebeab3c4dbbaab5633fa612a9b69be5bc96dceaf51e","operationId":"CreateTheme","method":"POST","path":"/api/v1/themes","title":"Create an inactive independent theme","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.","href":"documents/public-next/?selected=detail-sha256-fea7696584960d803b902ebeab3c4dbbaab5633fa612a9b69be5bc96dceaf51e#detail-sha256-fea7696584960d803b902ebeab3c4dbbaab5633fa612a9b69be5bc96dceaf51e","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Presentation"],"facets":[]},{"detailId":"detail-sha256-07d408998bbf911e890dcb0a636ad31b45ca03a34582b6fe4e914db778103e95","operationId":"DeleteTheme","method":"DELETE","path":"/api/v1/themes/{themeID}","title":"Delete an inactive theme","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.","href":"documents/public-next/?selected=detail-sha256-07d408998bbf911e890dcb0a636ad31b45ca03a34582b6fe4e914db778103e95#detail-sha256-07d408998bbf911e890dcb0a636ad31b45ca03a34582b6fe4e914db778103e95","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Presentation"],"facets":[]},{"detailId":"detail-sha256-ca506b855dd426a762de1523e6731d6073166ad9d9162aef01f33780250ac903","operationId":"GetTheme","method":"GET","path":"/api/v1/themes/{themeID}","title":"Read a custom theme","description":"Reads the saved custom definition and its current decimal revision. Built-in keys are enumerated by ListThemes and are not custom IDs.","href":"documents/public-next/?selected=detail-sha256-ca506b855dd426a762de1523e6731d6073166ad9d9162aef01f33780250ac903#detail-sha256-ca506b855dd426a762de1523e6731d6073166ad9d9162aef01f33780250ac903","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Presentation"],"facets":[]},{"detailId":"detail-sha256-9da9dc3f53ae998158854aa8370aee7bf86786b93f3f668f494b94972a3cc4ab","operationId":"RenameTheme","method":"PATCH","path":"/api/v1/themes/{themeID}","title":"Rename a theme without changing active selection","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.","href":"documents/public-next/?selected=detail-sha256-9da9dc3f53ae998158854aa8370aee7bf86786b93f3f668f494b94972a3cc4ab#detail-sha256-9da9dc3f53ae998158854aa8370aee7bf86786b93f3f668f494b94972a3cc4ab","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Presentation"],"facets":[]},{"detailId":"detail-sha256-51a1e7274a4336794677f6726a67eff3a10b163d5bd30f7cea8edc387b5b6a3f","operationId":"GetHealthz","method":"GET","path":"/healthz","title":"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.","href":"documents/public-next/?selected=detail-sha256-51a1e7274a4336794677f6726a67eff3a10b163d5bd30f7cea8edc387b5b6a3f#detail-sha256-51a1e7274a4336794677f6726a67eff3a10b163d5bd30f7cea8edc387b5b6a3f","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","deprecated":false,"tags":["Health"],"facets":[]}],"schemas":[{"detailId":"detail-sha256-63a7961bc3928619fc946d9ea8744c51b188149666003007a8edba81a04ec8f6","name":"BuiltinTheme","description":"One immutable preset supplied by the installed Goshtoso catalog.","href":"documents/public-next/?selected=detail-sha256-63a7961bc3928619fc946d9ea8744c51b188149666003007a8edba81a04ec8f6#detail-sha256-63a7961bc3928619fc946d9ea8744c51b188149666003007a8edba81a04ec8f6","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"2c584e96ce3b574e4e946a494e0ad004426f3fb6d2a5d895a24419f5931623e8","projectionSHA256":"4a977940d8c972b79357db0480eee00e0efb3b5064003c8913f4606d0dba7415"},{"detailId":"detail-sha256-25fbec90e83e90cb08fefeebe32908bf37acd6c8f5f0822d9f88d847f0b3fe01","name":"CustomTheme","description":"Named independent snapshot with stable theme:UUID identity and optimistic revision.","href":"documents/public-next/?selected=detail-sha256-25fbec90e83e90cb08fefeebe32908bf37acd6c8f5f0822d9f88d847f0b3fe01#detail-sha256-25fbec90e83e90cb08fefeebe32908bf37acd6c8f5f0822d9f88d847f0b3fe01","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"bb1d796ce12e273c59f73458f4d66607ecc54edc87f34963425eff9905c87d47","projectionSHA256":"157b8241122af27db6b195b11120324811b60e38094b3eef5d99ef94f0c1deae"},{"detailId":"detail-sha256-4a9d897892cdcee78fbac9966d2b2d491f3f5b22585a3a9a40b8408b79686f0e","name":"DashboardSnapshot","description":"Homepage widgets from the registered providers. A provider may fail independently; inspect unavailable even when the HTTP status is 200.","href":"documents/public-next/?selected=detail-sha256-4a9d897892cdcee78fbac9966d2b2d491f3f5b22585a3a9a40b8408b79686f0e#detail-sha256-4a9d897892cdcee78fbac9966d2b2d491f3f5b22585a3a9a40b8408b79686f0e","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"ca085f71102a14146fa6009d5aec3d0855f4108fb2fcf40985c4948fd3eee22d","projectionSHA256":"aa670aef934ffd38c000c02137988eac1700e928e26fe5e075660b60a0073ada"},{"detailId":"detail-sha256-b98a5038b3ae65d9c10e8053cb45b9d8cef4c5209c1c5e7d88bd026bc4d79b2c","name":"DashboardWidget","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.","href":"documents/public-next/?selected=detail-sha256-b98a5038b3ae65d9c10e8053cb45b9d8cef4c5209c1c5e7d88bd026bc4d79b2c#detail-sha256-b98a5038b3ae65d9c10e8053cb45b9d8cef4c5209c1c5e7d88bd026bc4d79b2c","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"cd2d1be6093ea660882c6c4d6647a0ebe1b0f1225525e1e8abccfe000d287cd8","projectionSHA256":"2816f795d405d2db83acec1f3a45b80ad059edcebb8af0f14f869e761a51a2c9"},{"detailId":"detail-sha256-fdb2a1034af2e234652693bdf9774a5e0e566def6359c75a30c8f3a25dc03bb9","name":"DiscoverySyncResponse","description":"Counts acknowledged for the synchronization/import operation. candidates counts observations processed, not services added to the homepage.","href":"documents/public-next/?selected=detail-sha256-fdb2a1034af2e234652693bdf9774a5e0e566def6359c75a30c8f3a25dc03bb9#detail-sha256-fdb2a1034af2e234652693bdf9774a5e0e566def6359c75a30c8f3a25dc03bb9","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"4d6d10cccc3274ec1914ca02f6c0df0cdef572c691d1ca50e73be2b00e467408","projectionSHA256":"b5b734a8bbcadb0bcffd10fc9734df9c164ca78bf3402633eb1552a8c3a06dee"},{"detailId":"detail-sha256-7e922dd0e9bffa067bbcc7795c76addac8ef20c365db92cf0d2d2c3dc1b2f44c","name":"ErrorResponse","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.","href":"documents/public-next/?selected=detail-sha256-7e922dd0e9bffa067bbcc7795c76addac8ef20c365db92cf0d2d2c3dc1b2f44c#detail-sha256-7e922dd0e9bffa067bbcc7795c76addac8ef20c365db92cf0d2d2c3dc1b2f44c","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"c25cb9d354f750a6f7548f6a230dbee7b4c3c486b0b9ba5634eadc747cf68d7d","projectionSHA256":"6e7b7529f853338d37176b232176ebb9050e172ad9d3cf5ba611a87719c5c79e"},{"detailId":"detail-sha256-01c328f9254e5f42dcb304f5b7227b08b5e32b4c014b5046c51558bc86e51bda","name":"FederatedCandidate","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.","href":"documents/public-next/?selected=detail-sha256-01c328f9254e5f42dcb304f5b7227b08b5e32b4c014b5046c51558bc86e51bda#detail-sha256-01c328f9254e5f42dcb304f5b7227b08b5e32b4c014b5046c51558bc86e51bda","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"598adf8150930d103c5feae296c30e5eafee9350df71f57971857114b2adcb3e","projectionSHA256":"b157e05a3b9799defa4a2aa244fa1c182d3ff6148fb0537fa6dfa0bedad8568e"},{"detailId":"detail-sha256-8bd71de7ca8362c305d535b7c5eee6af01a1de08721b18ecba17ce4379e48957","name":"FederationSnapshot","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.","href":"documents/public-next/?selected=detail-sha256-8bd71de7ca8362c305d535b7c5eee6af01a1de08721b18ecba17ce4379e48957#detail-sha256-8bd71de7ca8362c305d535b7c5eee6af01a1de08721b18ecba17ce4379e48957","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"5bc1bfa431b9d606514c298ba3cac84a23e65d09f3a384ac98e08e86386d057a","projectionSHA256":"63ec9443aaa30ccaef5e212f4ca71ca979f8198d2e2eee12fdad1c633a7adc67"},{"detailId":"detail-sha256-e4bbd82ba662286ed3dfe8b4b5ccacdbb0e4374970b989123aa8b13a032e8fc8","name":"HealthResponse","description":"The readiness check succeeded, including the configured storage check. It does not describe discovered application health.","href":"documents/public-next/?selected=detail-sha256-e4bbd82ba662286ed3dfe8b4b5ccacdbb0e4374970b989123aa8b13a032e8fc8#detail-sha256-e4bbd82ba662286ed3dfe8b4b5ccacdbb0e4374970b989123aa8b13a032e8fc8","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"499d5b603eceabcf05e581c64adb7443a5c4294fed6594459e76d9ae29999dc8","projectionSHA256":"6c29f1114490ec95c19140eba010702d57c7083a91a5ebe8fdda9123b22c5f7d"},{"detailId":"detail-sha256-1a382e73fed17936082f190748fbe9d07283a024f1227e0769a1f1d3368f7c03","name":"Host","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.","href":"documents/public-next/?selected=detail-sha256-1a382e73fed17936082f190748fbe9d07283a024f1227e0769a1f1d3368f7c03#detail-sha256-1a382e73fed17936082f190748fbe9d07283a024f1227e0769a1f1d3368f7c03","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"1552c83b4e343c4dc284a547a082c03ef6ae46d8e2aa7d783297b6172795cc76","projectionSHA256":"0782559d843aa8dc25fe70b94f9da03f5733a5fbd1be653382b0c48d4288fdbc"},{"detailId":"detail-sha256-5af6c328ae75bf0b9a2640c0d1ef995e2d8020cbdc5e52696fd7c02be0ca77ce","name":"HostDetail","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.","href":"documents/public-next/?selected=detail-sha256-5af6c328ae75bf0b9a2640c0d1ef995e2d8020cbdc5e52696fd7c02be0ca77ce#detail-sha256-5af6c328ae75bf0b9a2640c0d1ef995e2d8020cbdc5e52696fd7c02be0ca77ce","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"ed813026c48dc59c7beb39e33149cd27c198b561b0e758cbffdf7e6b84dce156","projectionSHA256":"07e1d4c7799d2ac146bd7340b0a2c623afba8494f93d7a6bfd6a456e5931d17c"},{"detailId":"detail-sha256-afcd355f31f1c9c7320122ce6256cf2cf6f1271a63cc70bbf69d7f92971b923a","name":"HostMetrics","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.","href":"documents/public-next/?selected=detail-sha256-afcd355f31f1c9c7320122ce6256cf2cf6f1271a63cc70bbf69d7f92971b923a#detail-sha256-afcd355f31f1c9c7320122ce6256cf2cf6f1271a63cc70bbf69d7f92971b923a","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"8d32775173fc7ef7abe96af455ad3e537184e6399f27bf4342e2fa5e8d468e36","projectionSHA256":"0429157fe9f48009941a6afda1ef27488da2ed9e69fb466899be06f2dcd4e613"},{"detailId":"detail-sha256-80f22fc42bc519ef1f8ec9b056343a88e6a011408914ae3e39d14380f3b8982b","name":"HostObservation","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.","href":"documents/public-next/?selected=detail-sha256-80f22fc42bc519ef1f8ec9b056343a88e6a011408914ae3e39d14380f3b8982b#detail-sha256-80f22fc42bc519ef1f8ec9b056343a88e6a011408914ae3e39d14380f3b8982b","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"304abe7e7f70920ae8d4807acc4d492d7259958bb3d6a0232dbd1937a2b4cbf2","projectionSHA256":"b78d684f39945f054d502488d7f1bd9392cec0e64b4bdb2a6ad5df01cece6aad"},{"detailId":"detail-sha256-d03d58891e68ccf348e09d6a5c26677aa9668f0aeecd1d0a7b69bbfad4bee1bd","name":"HostSample","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.","href":"documents/public-next/?selected=detail-sha256-d03d58891e68ccf348e09d6a5c26677aa9668f0aeecd1d0a7b69bbfad4bee1bd#detail-sha256-d03d58891e68ccf348e09d6a5c26677aa9668f0aeecd1d0a7b69bbfad4bee1bd","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"f011397ef5e37ad29d0b83caebdf05a07d9eeeb3e773f1e3d6c6a7614aac7bdb","projectionSHA256":"2d16e0a12346d577de909c37977ea3d27228ecf3b15dd129f672f5291322d6af"},{"detailId":"detail-sha256-290d32845647ae1da0f5c4e53f039a2603d5f124d7778cb8d2af910ce0ea0ce0","name":"HostWorkload","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.","href":"documents/public-next/?selected=detail-sha256-290d32845647ae1da0f5c4e53f039a2603d5f124d7778cb8d2af910ce0ea0ce0#detail-sha256-290d32845647ae1da0f5c4e53f039a2603d5f124d7778cb8d2af910ce0ea0ce0","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"1b429a8485cb74e99905f6c3bf251677225ec626f80dfa08971b34de1a4f0976","projectionSHA256":"189d6bfeb3663f93d9367310b8903cca4685162f7a584486b174fb454fb42c40"},{"detailId":"detail-sha256-a485f0abf54d6b224f27ce7a6ec6d900f7465b948b9262ff5a091fb20b741487","name":"IconUpload","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.","href":"documents/public-next/?selected=detail-sha256-a485f0abf54d6b224f27ce7a6ec6d900f7465b948b9262ff5a091fb20b741487#detail-sha256-a485f0abf54d6b224f27ce7a6ec6d900f7465b948b9262ff5a091fb20b741487","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"77e139932eff8c97409aee959142f71e32529a636a447eac6232b614c84d862f","projectionSHA256":"c770fc99953855833bfc5f6e1f8bfec29302b0f60ff61844c2bbeadeea118829"},{"detailId":"detail-sha256-381045fe1b4dbce0f23a64b491a40247a8305d13a89944f0a336ac1b81bc4065","name":"ManualServiceCreate","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.","href":"documents/public-next/?selected=detail-sha256-381045fe1b4dbce0f23a64b491a40247a8305d13a89944f0a336ac1b81bc4065#detail-sha256-381045fe1b4dbce0f23a64b491a40247a8305d13a89944f0a336ac1b81bc4065","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"7b03215d1de693e09c740788c3731dd6b6c82996dc17c5f14425fd7158dc18ac","projectionSHA256":"71f9f60f5cddc3c4c4c88a35c7ad1979f9ac0ea6ae0cf9a5d78dae4f6f922c91"},{"detailId":"detail-sha256-ef1d29e96891490fc987009ec2a8c7164366357d74066050f63ffaef5acf3655","name":"Notification","description":"Retained message with immutable producer content, server receipt time and independent read state.","href":"documents/public-next/?selected=detail-sha256-ef1d29e96891490fc987009ec2a8c7164366357d74066050f63ffaef5acf3655#detail-sha256-ef1d29e96891490fc987009ec2a8c7164366357d74066050f63ffaef5acf3655","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"0f263eea10709f86752754069c8aeb4cfb58885c36fb1b1e15eae52cf59d655a","projectionSHA256":"b31afedcaa139aa3c743da6382754527e28afa8e2468812228cf05f946d4d10d"},{"detailId":"detail-sha256-c994b7344e776db963089701f3fb5b8a7571a429cb218ed46ccddc31f89523e1","name":"NotificationDestination","description":"Optional navigation target. The kind selects a core route, a connection-scoped plugin page or an external URL.","href":"documents/public-next/?selected=detail-sha256-c994b7344e776db963089701f3fb5b8a7571a429cb218ed46ccddc31f89523e1#detail-sha256-c994b7344e776db963089701f3fb5b8a7571a429cb218ed46ccddc31f89523e1","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"f073e02067ee12cb6257eff02ceea4ad74e8bd9547c3e05207cfd5952f6c2bc2","projectionSHA256":"ba266158227daa4e2928e70ba50a38c747bf42baddb70391e7a8ad9d0592c12c"},{"detailId":"detail-sha256-2c7a634f06153a1586bb7c3c876fd7771d56e434418f1f3579379bfd28c2209f","name":"NotificationPage","description":"Cursor-based retained inbox page, global unread count and effective retention in days.","href":"documents/public-next/?selected=detail-sha256-2c7a634f06153a1586bb7c3c876fd7771d56e434418f1f3579379bfd28c2209f#detail-sha256-2c7a634f06153a1586bb7c3c876fd7771d56e434418f1f3579379bfd28c2209f","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"bb223a1f596e129dc8562b9d3b59005342367e795b6b116e6979eeeffeec0434","projectionSHA256":"70d1f3fd6f17506ded175620b165998b7209ba04572eb11516e3102aa56b3b99"},{"detailId":"detail-sha256-88b9536fe89bd8ac2b9235ba27859261f780cd467aefa3e2c759bf53f8cb9255","name":"NotificationPublishRequest","description":"External publisher message. The credential determines source identity; eventId deduplicates within that source.","href":"documents/public-next/?selected=detail-sha256-88b9536fe89bd8ac2b9235ba27859261f780cd467aefa3e2c759bf53f8cb9255#detail-sha256-88b9536fe89bd8ac2b9235ba27859261f780cd467aefa3e2c759bf53f8cb9255","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"b0b7f1ecefdd1549c1115132c122cefedf09498320789a022b23125a34338863","projectionSHA256":"24da9dec26349f450e89c21ad9dedc15d8e1064d0c379078599f9231e5c87539"},{"detailId":"detail-sha256-b7c626e75ae477d51948cbee3a136dd38534bc776193ba1fe2a1271c49d6118f","name":"NotificationReceipt","description":"Durable notification identity and original creation time. accepted is false for an identical event replay.","href":"documents/public-next/?selected=detail-sha256-b7c626e75ae477d51948cbee3a136dd38534bc776193ba1fe2a1271c49d6118f#detail-sha256-b7c626e75ae477d51948cbee3a136dd38534bc776193ba1fe2a1271c49d6118f","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"7eed28803c27358065ff9ce89af5abe5e9788948b0d81876a0a944094a4db277","projectionSHA256":"1d4e80d5d487352bafb4e19cca245c15536c9c075277dcaa185923fd3c1c6631"},{"detailId":"detail-sha256-56afb62820edee8cc5561c24568820cb3d4d49fab633e1c313be798dd38081d2","name":"NotificationSource","description":"Producer identity assigned by the authenticated publisher or installed plugin connection.","href":"documents/public-next/?selected=detail-sha256-56afb62820edee8cc5561c24568820cb3d4d49fab633e1c313be798dd38081d2#detail-sha256-56afb62820edee8cc5561c24568820cb3d4d49fab633e1c313be798dd38081d2","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"eeb3d39fac30064a0e2f31cd64703c1c5ce1ec19160fa576d5f5eb08e540b1da","projectionSHA256":"989ad0c4d32f6804e3e38c9124fabb8d98c979dd488d55e304808ae3df224ffb"},{"detailId":"detail-sha256-fbad79d5f50298273d717912c3f8c80a9d5b478ef67c7d50bc6fb15c6d6491f9","name":"PluginCatalog","description":"Installed plugin descriptors and safe installation failures, without executable paths or credentials.","href":"documents/public-next/?selected=detail-sha256-fbad79d5f50298273d717912c3f8c80a9d5b478ef67c7d50bc6fb15c6d6491f9#detail-sha256-fbad79d5f50298273d717912c3f8c80a9d5b478ef67c7d50bc6fb15c6d6491f9","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"d75520e3ab1371ea1774d6e23b14266e7dae5757cf9874849e0c4292f68c8041","projectionSHA256":"60e2de132a98a29508b0df4965ef5f681b4df707e4a02599f10e5c695c5c7cdc"},{"detailId":"detail-sha256-126e646e0d6af7d1251ed78f116fb771a664066494668de9249ecf33bdbafc43","name":"PluginConnection","description":"Connection identity, applied configuration revision, collection state and available query identifiers.","href":"documents/public-next/?selected=detail-sha256-126e646e0d6af7d1251ed78f116fb771a664066494668de9249ecf33bdbafc43#detail-sha256-126e646e0d6af7d1251ed78f116fb771a664066494668de9249ecf33bdbafc43","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"0756825f4fd0ada0947de0ed594427544fce9997ba8ee7026d5e43c1b1bbb969","projectionSHA256":"0c1104627068fb5a3501e1734c5c587d233dbed8bd00ef87cdf7460431d026c0"},{"detailId":"detail-sha256-e4f940cc9a78e56a6049b58f44abcd4badb4d352bf8307cbb0d96d0b2c63996c","name":"PluginDescriptor","description":"Installed plugin version, verified manifest digest and configured connection descriptors.","href":"documents/public-next/?selected=detail-sha256-e4f940cc9a78e56a6049b58f44abcd4badb4d352bf8307cbb0d96d0b2c63996c#detail-sha256-e4f940cc9a78e56a6049b58f44abcd4badb4d352bf8307cbb0d96d0b2c63996c","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"fb4b4697c29a499ee0452939b988f99567c549fea8d992fe48fbdebffa144c38","projectionSHA256":"39566ae5010d7cc3f998f43429e630b83c02befacefc57bddd735b1657c51b16"},{"detailId":"detail-sha256-13f4988f2958333ad4f439b4a849facd17f50b85edafc7a24365060592ae4702","name":"PluginFailure","description":"Safe error code and message, with a retryability hint and no source credentials.","href":"documents/public-next/?selected=detail-sha256-13f4988f2958333ad4f439b4a849facd17f50b85edafc7a24365060592ae4702#detail-sha256-13f4988f2958333ad4f439b4a849facd17f50b85edafc7a24365060592ae4702","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"1358fb58777d875bd345cb7b1d797fe448c20a2dd2022a738ea28dad31e070c8","projectionSHA256":"ad24a56536913f61faafe5bbc714388959d51d27d9d06c703e37fc86a7b2e43e"},{"detailId":"detail-sha256-9b0d40c68f79454a9d3ab84c035baa2d480bffa082ea86b6519eb13d004a6ad6","name":"PluginInstallationProblem","description":"Installation identity and safe failure details when a configured package cannot become available.","href":"documents/public-next/?selected=detail-sha256-9b0d40c68f79454a9d3ab84c035baa2d480bffa082ea86b6519eb13d004a6ad6#detail-sha256-9b0d40c68f79454a9d3ab84c035baa2d480bffa082ea86b6519eb13d004a6ad6","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"cf416770c15484c66596770a32df83954966278b5b9e3777c2b845e6d0884678","projectionSHA256":"ef82b73fe27ae2704e1f6288375826756dcb89481d463291fdcab1d2b09bd989"},{"detailId":"detail-sha256-592ae8630104254301bf08c97db900ebfd83a2325439b707fe0dfb72e47d0d6a","name":"PluginPlacement","description":"Retained widget configuration with its optimistic concurrency revision and persistence timestamps.","href":"documents/public-next/?selected=detail-sha256-592ae8630104254301bf08c97db900ebfd83a2325439b707fe0dfb72e47d0d6a#detail-sha256-592ae8630104254301bf08c97db900ebfd83a2325439b707fe0dfb72e47d0d6a","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"e7e6c56d41e1c9211ea62aab4a6572cb6b43db166d959dff429679d5797449c2","projectionSHA256":"4608fca2733f350351875ae17c78575ee90b3340b654e7e4fe78b0e04d4b58ee"},{"detailId":"detail-sha256-c7502a78d78d85d18ce76735fc8efd0ab792163e4b9d752bb411ac71ee8fbf67","name":"PluginPlacementBody","description":"Selected plugin connection, widget contribution, saved options and enabled state.","href":"documents/public-next/?selected=detail-sha256-c7502a78d78d85d18ce76735fc8efd0ab792163e4b9d752bb411ac71ee8fbf67#detail-sha256-c7502a78d78d85d18ce76735fc8efd0ab792163e4b9d752bb411ac71ee8fbf67","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"f0ed51cfeaac0de9d6d5936c6d70b4a39e8509b59a3434f177989a5bf4125175","projectionSHA256":"a1e11c470771cd5722f33a347284fa57044fda9dbc1dcb72677804f02b25d0d2"},{"detailId":"detail-sha256-754e3a32ae4a67f6e6d5bc044ee4f7050513e37fa2636a822651f3cc9e929f03","name":"PluginQueryResult","description":"Cached query data with collection freshness, observation identity and source failure metadata.","href":"documents/public-next/?selected=detail-sha256-754e3a32ae4a67f6e6d5bc044ee4f7050513e37fa2636a822651f3cc9e929f03#detail-sha256-754e3a32ae4a67f6e6d5bc044ee4f7050513e37fa2636a822651f3cc9e929f03","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"306f58cafa29ae872a7f2940247f483cffefca88425db97ad72fc71d76592b30","projectionSHA256":"fc43a660aee91f9417dfd52edd14608cff1e192dd9567769f4da12d3ee3ed28b"},{"detailId":"detail-sha256-8412eb9b302a5562d0c1a7f266d5e5cecf822d94c34372a409b6623e07bbfbf9","name":"PluginWidgetDefinition","description":"Installed widget contribution and its JSON Schema for user-configurable options.","href":"documents/public-next/?selected=detail-sha256-8412eb9b302a5562d0c1a7f266d5e5cecf822d94c34372a409b6623e07bbfbf9#detail-sha256-8412eb9b302a5562d0c1a7f266d5e5cecf822d94c34372a409b6623e07bbfbf9","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"936f8a34c8a26c82aa621722e74eb2c9936c9f9cb8b5a504b5e3ca380478a327","projectionSHA256":"bf56c08d5647a6d3c46a2978e193bd9951565e8609c5913f44c40363b68077be"},{"detailId":"detail-sha256-1db876ddf32c9bdb3797d5756bb58c6096905d78e60d9d253e83ab3518cd1f80","name":"PresentationConflict","description":"Resource and current revision explaining a rejected command. Never silently replace the draft revision.","href":"documents/public-next/?selected=detail-sha256-1db876ddf32c9bdb3797d5756bb58c6096905d78e60d9d253e83ab3518cd1f80#detail-sha256-1db876ddf32c9bdb3797d5756bb58c6096905d78e60d9d253e83ab3518cd1f80","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"582e4793023487d9e59e1516829e4985e8c4dfdd13d0db76a22631563dcbd3bb","projectionSHA256":"09a23993f84bd5957bf59422ea5af0ec10b26562c3c55785ff13ea70052ec292"},{"detailId":"detail-sha256-c44d322684fa5cc824d033d34cb03d5171ab3e36b740eed9ca3823ddacf2805d","name":"PresentationReceipt","description":"Committed result of a successful Save or its immediate exact replay.","href":"documents/public-next/?selected=detail-sha256-c44d322684fa5cc824d033d34cb03d5171ab3e36b740eed9ca3823ddacf2805d#detail-sha256-c44d322684fa5cc824d033d34cb03d5171ab3e36b740eed9ca3823ddacf2805d","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"b3ca6515c49ddc724c2f4efbc00d7db507ed47ccae5906e8967a3e67574ce91e","projectionSHA256":"9f42aa0f1c8115e882304d4f42710e70f3cfabd3e6258991450e5f49a256d4ad"},{"detailId":"detail-sha256-c97d1bd2526120558e3e0b1b2d97ca60cdebacd2f1d0cf2e0536847959326e8f","name":"PresentationRevision","description":"Decimal optimistic revision. Copy it from the corresponding read response. Missing revisions never mean overwrite.","href":"documents/public-next/?selected=detail-sha256-c97d1bd2526120558e3e0b1b2d97ca60cdebacd2f1d0cf2e0536847959326e8f#detail-sha256-c97d1bd2526120558e3e0b1b2d97ca60cdebacd2f1d0cf2e0536847959326e8f","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"3d1efa7e754eb4990b58b57b1dc2e5986f21a4511efc1186c19c13f43de920f0","projectionSHA256":"d2102b1e5a7754166eae52db4eda71ba064bf8743a95b972da292f4834187c75"},{"detailId":"detail-sha256-0435c9921ff91122de6e0ac0dca215c881e3eb167a5102ef92817402c68ed167","name":"PresentationSave","description":"Client-identified atomic Save. Preserve command and resource IDs when retrying an unconfirmed response.","href":"documents/public-next/?selected=detail-sha256-0435c9921ff91122de6e0ac0dca215c881e3eb167a5102ef92817402c68ed167#detail-sha256-0435c9921ff91122de6e0ac0dca215c881e3eb167a5102ef92817402c68ed167","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"6e291385c42455bd134e84d8c00462a7f6926817a7be37f4a2023dcc5d55595a","projectionSHA256":"e94a6887cfd5cc805d6d952b577f5cb1674ffbb987757273b021f559f38a9e4e"},{"detailId":"detail-sha256-14cef2975728bc153f21af7aba55808c5c446b248bfad5cd0025703028fe1ff7","name":"PresentationSelection","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.","href":"documents/public-next/?selected=detail-sha256-14cef2975728bc153f21af7aba55808c5c446b248bfad5cd0025703028fe1ff7#detail-sha256-14cef2975728bc153f21af7aba55808c5c446b248bfad5cd0025703028fe1ff7","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"e5e78b01e170128d843da9e104a171503b32ebc3e7140f2202f14f5c55965af4","projectionSHA256":"75fc9f182fc31eee680e9233164abd6c661360ea3713830494bca77e63d2879a"},{"detailId":"detail-sha256-aeee4a14d6bea51b38767807af2c2433f56ee65a087eafb5136974d7779d2edd","name":"PresentationSettings","description":"Instance-wide theme identity and color mode with a decimal settings revision.","href":"documents/public-next/?selected=detail-sha256-aeee4a14d6bea51b38767807af2c2433f56ee65a087eafb5136974d7779d2edd#detail-sha256-aeee4a14d6bea51b38767807af2c2433f56ee65a087eafb5136974d7779d2edd","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"a0d9d9a15d0295447ad1aaa2dd6519ba5b91613d214e223c32f081546bb79995","projectionSHA256":"10d5dfc84071a931567898e50202a311810f490166f68d14e9b9c96f2baeb85c"},{"detailId":"detail-sha256-3c420e01e6427948f201175f860314bb7c745eed1ae8071cd475c7217d233bfd","name":"PresentationState","description":"Authoritative settings and the complete currently selected definition. Storage failure returns 503, never empty defaults.","href":"documents/public-next/?selected=detail-sha256-3c420e01e6427948f201175f860314bb7c745eed1ae8071cd475c7217d233bfd#detail-sha256-3c420e01e6427948f201175f860314bb7c745eed1ae8071cd475c7217d233bfd","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"1b94eea145e3cde8693f19a0d6dfcfd9c9c789858ba601f5f2a9370589828d79","projectionSHA256":"721d40f3e8e54ef715b36eeb77b5db6699c42cdffcf3794b9c335b718de91c40"},{"detailId":"detail-sha256-8a35d3fd708ef7be3bd893f04fe5ea0759df22aefde79aa36e987edd76371cff","name":"ResourceObservation","description":"The resource, endpoints, and images retained behind one member of a grouped service. It is evidence, not an independently selected homepage card.","href":"documents/public-next/?selected=detail-sha256-8a35d3fd708ef7be3bd893f04fe5ea0759df22aefde79aa36e987edd76371cff#detail-sha256-8a35d3fd708ef7be3bd893f04fe5ea0759df22aefde79aa36e987edd76371cff","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"451d383d43e0f0267fbaa0db8c743ffafcfd38a23a4b4d345659f3a6af673f18","projectionSHA256":"9a317701d8c00ce0925f3675d98969e424bf68347ba08dd6920c570f670585a0"},{"detailId":"detail-sha256-ff223ea0467df1480255a3d9fa6254f0149280c4d20ddbfe798374ea2206c4b7","name":"ResourceRef","description":"Resource identity inside a source. Namespace is normally absent or empty for container resources and set for namespaced Kubernetes resources.","href":"documents/public-next/?selected=detail-sha256-ff223ea0467df1480255a3d9fa6254f0149280c4d20ddbfe798374ea2206c4b7#detail-sha256-ff223ea0467df1480255a3d9fa6254f0149280c4d20ddbfe798374ea2206c4b7","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"4953037bf36d662a445595ce7b4c5b53c98b5b8c6abac1ee8847d5853add1177","projectionSHA256":"d22efeaf1426b5afe5a4099612f2f43cd486b42331693f92645b33705a923681"},{"detailId":"detail-sha256-bb44f1c1fe27f7bab49e6a97912080cf6b91fdbf1df58735705628386a896288","name":"ServiceCandidate","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.","href":"documents/public-next/?selected=detail-sha256-bb44f1c1fe27f7bab49e6a97912080cf6b91fdbf1df58735705628386a896288#detail-sha256-bb44f1c1fe27f7bab49e6a97912080cf6b91fdbf1df58735705628386a896288","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"ac2c8507a819b02937ad43cdb1803b61edf0a931b4e21a8b7a4f965bd924d831","projectionSHA256":"eae422f2c47b543ac482234738297226474cb677ad7928715c7e33e7f4d1219e"},{"detailId":"detail-sha256-f755203cd65d2ffa3fbf43eae97b1e42604431aa1a6efa04874414d148e81d2d","name":"ServiceEdit","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.","href":"documents/public-next/?selected=detail-sha256-f755203cd65d2ffa3fbf43eae97b1e42604431aa1a6efa04874414d148e81d2d#detail-sha256-f755203cd65d2ffa3fbf43eae97b1e42604431aa1a6efa04874414d148e81d2d","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"bf42b32e71ae7885d2dcb13b6db2187ace2ce9434d1914f834a0a9fada3405a8","projectionSHA256":"1ec239612e3322e0c1267e7b90a3abaf6cd2aa85b5f3fd573528d7168e573697"},{"detailId":"detail-sha256-d1370bb5563e05b7a9d20fe6152211d0cd49439564dac30a848a2f96a04f128c","name":"ServiceEndpoint","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 //.","href":"documents/public-next/?selected=detail-sha256-d1370bb5563e05b7a9d20fe6152211d0cd49439564dac30a848a2f96a04f128c#detail-sha256-d1370bb5563e05b7a9d20fe6152211d0cd49439564dac30a848a2f96a04f128c","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"a2d656c9461eb6e9139121a17ad63e01e5bb9631de098bbb20d2416661aba453","projectionSHA256":"179c0a471bc805d44b2e48baa372252e66c873df2a2e56aa0e217ce9dc248321"},{"detailId":"detail-sha256-bc9c4f7e06adcc286a6d6ae9665ee81be54a1de7f73ae51f616ad53229d9133e","name":"ServiceListResponse","description":"Catalog service groups for the requested view. Staging includes every lifecycle state; the homepage endpoint restricts the list to pinned live groups.","href":"documents/public-next/?selected=detail-sha256-bc9c4f7e06adcc286a6d6ae9665ee81be54a1de7f73ae51f616ad53229d9133e#detail-sha256-bc9c4f7e06adcc286a6d6ae9665ee81be54a1de7f73ae51f616ad53229d9133e","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"0e96abd911ced8d1e088fad80c6bebe6424c910543e9ab754f5cc436adcd8161","projectionSHA256":"6476db9ae07227109e8c6a3137f9e4924efea14bd81849369a72fea0a3f4ded7"},{"detailId":"detail-sha256-d2c0064d48b0683c8330d31b48845d42083862ad66d6ed12ab61a65c6dd4c0a6","name":"SourceRef","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.","href":"documents/public-next/?selected=detail-sha256-d2c0064d48b0683c8330d31b48845d42083862ad66d6ed12ab61a65c6dd4c0a6#detail-sha256-d2c0064d48b0683c8330d31b48845d42083862ad66d6ed12ab61a65c6dd4c0a6","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"9e851567122170f340cf13913eca993b1e3c418ffda273d8893215c2a7bf0a4e","projectionSHA256":"f84db64f2718e45f8188179a2d070d1d114ba41102da3d63c8878356fcb2ee2c"},{"detailId":"detail-sha256-e462701694095e3c0f16553597d6bce405642249f410d9bb708fb0023b94e303","name":"TelemetryBatch","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.","href":"documents/public-next/?selected=detail-sha256-e462701694095e3c0f16553597d6bce405642249f410d9bb708fb0023b94e303#detail-sha256-e462701694095e3c0f16553597d6bce405642249f410d9bb708fb0023b94e303","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"18b5d37e83f5c2dfad67764d6188808e72f93018b138ae3d8d6ba44b0a023e1e","projectionSHA256":"55a3aa9b01a6244f862167ba95d34e8208844480abb7a7fec4985b9af8f552b7"},{"detailId":"detail-sha256-6868e9311eb24e49b40af6ee60bc215784d9b0329556d66b9a76ca6f9e49f679","name":"ThemeCatalog","description":"Installed preset catalog and saved custom themes. The example shows one preset entry; GET returns every installed preset.","href":"documents/public-next/?selected=detail-sha256-6868e9311eb24e49b40af6ee60bc215784d9b0329556d66b9a76ca6f9e49f679#detail-sha256-6868e9311eb24e49b40af6ee60bc215784d9b0329556d66b9a76ca6f9e49f679","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"8f71144c9128a06c9ca9fe164e66c875606026b2b4bb7349625a016051d47e3f","projectionSHA256":"73478dab10f275bce3aa7db9df74f78d35120de5b7c782414e84003ec2e4825f"},{"detailId":"detail-sha256-5532a98f636495c96e22ac77528fb5ebd507758a434bff9f3711d93a78dbf204","name":"ThemeColor","description":"Finite literal color with three channels and explicit alpha. No CSS expressions or palette aliases.","href":"documents/public-next/?selected=detail-sha256-5532a98f636495c96e22ac77528fb5ebd507758a434bff9f3711d93a78dbf204#detail-sha256-5532a98f636495c96e22ac77528fb5ebd507758a434bff9f3711d93a78dbf204","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"a4c565262f61b637703ac0c2e1a3d6119dff2bd7df550c7778ef7b0b24fc938b","projectionSHA256":"1eec07e308158f888b11a3f5f759e032b8b3a03ec894d3db3e934e4bf51e3cc9"},{"detailId":"detail-sha256-4a5a91b502d462a3f9003e02a328683bd1c6297b29266b0014ad839eb7618481","name":"ThemeCopyFrom","description":"Copy a saved custom snapshot at an explicit revision. Later source edits do not change the copy.","href":"documents/public-next/?selected=detail-sha256-4a5a91b502d462a3f9003e02a328683bd1c6297b29266b0014ad839eb7618481#detail-sha256-4a5a91b502d462a3f9003e02a328683bd1c6297b29266b0014ad839eb7618481","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"1e3fb15756f811b120b39531457109455de406927518195bab061227f9172769","projectionSHA256":"93869339204b006bc581650ca91d9b6adbfb59d005e3ca6155ad47b56fd4c9b9"},{"detailId":"detail-sha256-343b654758c6a35bc9920bff5c6c310e65d2df81fd926b7cbd3c6d865ad209d2","name":"ThemeCreate","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.","href":"documents/public-next/?selected=detail-sha256-343b654758c6a35bc9920bff5c6c310e65d2df81fd926b7cbd3c6d865ad209d2#detail-sha256-343b654758c6a35bc9920bff5c6c310e65d2df81fd926b7cbd3c6d865ad209d2","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"b402dd179ac6e733b9749cdaac67c861612db8f58d53954ec969dd67757c23d0","projectionSHA256":"d0d54f069052efb65b81f9aafc1d47ba70f18c50e7bc38b6c10cb08bb1cddfec"},{"detailId":"detail-sha256-9540fd0fed84606b4e5035f794352997fbdf8729ba5ade0a34b0aeeb17e73cfb","name":"ThemeDefinition","description":"Complete snapshot, at most 64 KiB JSON. Unknown fields and incomplete token sets are rejected.","href":"documents/public-next/?selected=detail-sha256-9540fd0fed84606b4e5035f794352997fbdf8729ba5ade0a34b0aeeb17e73cfb#detail-sha256-9540fd0fed84606b4e5035f794352997fbdf8729ba5ade0a34b0aeeb17e73cfb","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"606e9a800a59a50df83b2e339d314a999610719ac1fbc3d3605293c305433ac6","projectionSHA256":"383e898ff130543e32061331f5b7ef33f9479d8211cb95bc2040d5784e0f47a1"},{"detailId":"detail-sha256-6d525d1fe4e718e0107bb37fed11d60bf998a16b7ed3c229fb8abd32748489e4","name":"ThemeDraft","description":"Complete named replacement draft. Applied only by an atomic presentation Save.","href":"documents/public-next/?selected=detail-sha256-6d525d1fe4e718e0107bb37fed11d60bf998a16b7ed3c229fb8abd32748489e4#detail-sha256-6d525d1fe4e718e0107bb37fed11d60bf998a16b7ed3c229fb8abd32748489e4","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"3ddd5c358bf52acc00cfb634cde760ba6eed604673e58a1c32f2fddf36e8cc4b","projectionSHA256":"8d4776fe1ed2a0ef295da25450143922f7bd993dfc000555a46280253826b23f"},{"detailId":"detail-sha256-7ed65008bf2d88f702c96856a1dfb1807cf78088406d5b166ab1b21609536066","name":"ThemeFontRef","description":"Stable font source and identity. Uploaded IDs reference immutable file bytes.","href":"documents/public-next/?selected=detail-sha256-7ed65008bf2d88f702c96856a1dfb1807cf78088406d5b166ab1b21609536066#detail-sha256-7ed65008bf2d88f702c96856a1dfb1807cf78088406d5b166ab1b21609536066","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"0fe69d47af3c194e7d3719e69183ebbfd81e00a910a2e82143f520ab23c65506","projectionSHA256":"58fe041470c93bf83241563d773e5e1a85e69bd261601b7d72219ac1ac8e8a63"},{"detailId":"detail-sha256-307bfe3b1fb509bf27f27259f9d5c4536315dfd722ecb1e8977ec1c72d7366cd","name":"ThemeProvenance","description":"Origin of a materialized snapshot. These fields establish no live preset inheritance.","href":"documents/public-next/?selected=detail-sha256-307bfe3b1fb509bf27f27259f9d5c4536315dfd722ecb1e8977ec1c72d7366cd#detail-sha256-307bfe3b1fb509bf27f27259f9d5c4536315dfd722ecb1e8977ec1c72d7366cd","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"a82c0a7b1e031b9f770995c109d92a7c2dbffbaf6e270bb91b2418331d7d3c56","projectionSHA256":"1ce129ce9052beedd17a99daba369a68d029cec8db14cbc79fcb8b0a56cfb695"},{"detailId":"detail-sha256-2673be0581553745757b8183052168e0a6e5344c4cc3032dd34072360e3599c3","name":"ThemeRename","description":"Metadata-only name change guarded by the current theme revision. Selection and definition stay unchanged.","href":"documents/public-next/?selected=detail-sha256-2673be0581553745757b8183052168e0a6e5344c4cc3032dd34072360e3599c3#detail-sha256-2673be0581553745757b8183052168e0a6e5344c4cc3032dd34072360e3599c3","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"aaf72cd76e3d3f14cd5fe1272e7c5e25f2ac43cc8353ca4ee34d14c28f6ba3ce","projectionSHA256":"cba5f9f96927f0029db9832394ec86f542390f07639307f2c9880df81dbf1638"},{"detailId":"detail-sha256-b720f0c977adaed9e6401b0e0296de4720dc5eb5ffc2a2ab21fe3ed6b9dcde92","name":"ThemeTypography","description":"Independent title and body font choices. Variable fonts use default axis values.","href":"documents/public-next/?selected=detail-sha256-b720f0c977adaed9e6401b0e0296de4720dc5eb5ffc2a2ab21fe3ed6b9dcde92#detail-sha256-b720f0c977adaed9e6401b0e0296de4720dc5eb5ffc2a2ab21fe3ed6b9dcde92","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"ad441107c025bda77666cd588f2d3d8db007bfd6597ab6cd3a0a05d2eaf659f4","projectionSHA256":"9b7cd94fbff25da256faee5b967fea034aa7e1b12d5906b46ecd4cbefd8a6bcf"},{"detailId":"detail-sha256-5db45abe774375ddede002aa57c81147243264e8c0fdf2d1ec845406af4f59f5","name":"UploadedFont","description":"Metadata derived from uploaded bytes. Each file is independent, including variable fonts. Lists omit file bytes.","href":"documents/public-next/?selected=detail-sha256-5db45abe774375ddede002aa57c81147243264e8c0fdf2d1ec845406af4f59f5#detail-sha256-5db45abe774375ddede002aa57c81147243264e8c0fdf2d1ec845406af4f59f5","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"301470f23f0626c2da940a00a44991f7c343f7047d871ccfa94428c95532f621","projectionSHA256":"3434c398ff55e84e65a47cdd83578a626f9b2f88c746f1e5c84003dc077731f5"},{"detailId":"detail-sha256-e89c608a833bc9065babee307b65ff6edf04b1717e6c989fe4a4d9116931914c","name":"UploadedIcon","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.","href":"documents/public-next/?selected=detail-sha256-e89c608a833bc9065babee307b65ff6edf04b1717e6c989fe4a4d9116931914c#detail-sha256-e89c608a833bc9065babee307b65ff6edf04b1717e6c989fe4a4d9116931914c","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"dc56f297ecd43b9c0cef480491743f2e7e425485dbafb85cfcaa855a6dad0455","projectionSHA256":"1dee98af5dce91139ffc4193762c7ede2073c92a32d7edb483a9d41d36ba0a81"},{"detailId":"detail-sha256-9fc7a2650924f7df6c667d6fd39cd3fc0e2c872b0342ccb3ba9b9afd8dd5caeb","name":"WebPushRegistration","description":"Subscription paired with its private browser ownership token.","href":"documents/public-next/?selected=detail-sha256-9fc7a2650924f7df6c667d6fd39cd3fc0e2c872b0342ccb3ba9b9afd8dd5caeb#detail-sha256-9fc7a2650924f7df6c667d6fd39cd3fc0e2c872b0342ccb3ba9b9afd8dd5caeb","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"14d421ab8c500391603d3d11e802b73dbc315c12e82dab6348d4a5e06bebb99a","projectionSHA256":"eab98ca541d000426139af9551a8731c51c2585bb45d32830bb590fb8c7173c7"},{"detailId":"detail-sha256-8811f4a3d9f96a34864b3485633f5e6b3508e653b2e089c46e6bca0e80456e72","name":"WebPushSettings","description":"Public push capability and subscription status for one browser token.","href":"documents/public-next/?selected=detail-sha256-8811f4a3d9f96a34864b3485633f5e6b3508e653b2e089c46e6bca0e80456e72#detail-sha256-8811f4a3d9f96a34864b3485633f5e6b3508e653b2e089c46e6bca0e80456e72","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"2c315800659e3f565a0ac04af580230a0746b31af4adad3418fe3dc77f8f37b7","projectionSHA256":"06529432f6b96b80f0b682c9dea74c2fb21544791a4f83d1f480d89bdffa95f6"},{"detailId":"detail-sha256-ae821d7cd6307414839b1eded8eb6fc9845755301b164c05aa35069d97673d8d","name":"WebPushSubscription","description":"Browser push endpoint and public encryption material from PushManager.","href":"documents/public-next/?selected=detail-sha256-ae821d7cd6307414839b1eded8eb6fc9845755301b164c05aa35069d97673d8d#detail-sha256-ae821d7cd6307414839b1eded8eb6fc9845755301b164c05aa35069d97673d8d","detailChild":"details/public-next/88db805385a647c5c2c85623fe0f57ad9631b365093a1bbd6d0d855d8b926568.json","canonicalSHA256":"839d8a0770589810a936e452d15d10dd5d6657f82d553254a0e01f6b4650289c","projectionSHA256":"8771fd3e35f99a5c55eb5463f67829ff1cfa8b30659394ec963d96fe66272c70"}],"securitySchemes":[{"name":"FederationBearer","anchor":"security-scheme-f83c55e0a986d85f","type":"http","description":"Source-bound agent credential. Send Authorization: Bearer \u003ctoken\u003e. 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.","scheme":"bearer"},{"name":"NotificationOperator","anchor":"security-scheme-db4b5d4d056646a1","type":"http","description":"Private operator credential for listing, reading, marking and clearing the retained inbox. It cannot publish messages.","scheme":"bearer"},{"name":"NotificationPublisher","anchor":"security-scheme-80a2b25b75b47750","type":"http","description":"Configured source-bound credential for external publication only. It cannot list, mark or clear messages.","scheme":"bearer"},{"name":"PluginService","anchor":"security-scheme-9bcb06a203716772","type":"http","description":"Private BFF service credential for plugin metadata, queries and retained widget configuration.","scheme":"bearer"}]}]}