{
  "openapi": "3.0.3",
  "info": {
    "title": "STATIC CDN metadata API",
    "version": "1.0.0",
    "description": "Read-only static files. No authentication, server-side filtering, writes or purge API. Paths are relative to the installation root. Node data are explicitly a demonstration, not live monitoring."
  },
  "servers": [
    {
      "url": "..",
      "description": "Installation root relative to v1/openapi.json"
    }
  ],
  "paths": {
    "/v1/health.json": {
      "get": {
        "summary": "Health manifest",
        "description": "Идентификатор статической сборки и проверка доступности файла.",
        "responses": {
          "200": {
            "description": "Static JSON document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "File not found; response body is determined by the hosting server"
          }
        }
      }
    },
    "/v1/libraries.json": {
      "get": {
        "summary": "Library catalog",
        "description": "Полный каталог с версиями, путями, размерами и хешами.",
        "responses": {
          "200": {
            "description": "Static JSON document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "File not found; response body is determined by the hosting server"
          }
        }
      }
    },
    "/v1/packages.json": {
      "get": {
        "summary": "Package index",
        "description": "Метаданные пакетов и ссылки на ZIP-архивы.",
        "responses": {
          "200": {
            "description": "Static JSON document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "File not found; response body is determined by the hosting server"
          }
        }
      }
    },
    "/v1/integrity.json": {
      "get": {
        "summary": "Integrity manifest",
        "description": "SHA-384, SHA-256 и размер всех артефактов.",
        "responses": {
          "200": {
            "description": "Static JSON document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "File not found; response body is determined by the hosting server"
          }
        }
      }
    },
    "/v1/nodes.json": {
      "get": {
        "summary": "Demo topology",
        "description": "Иллюстративные узлы. Не телеметрия реальной сети.",
        "responses": {
          "200": {
            "description": "Static JSON document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "File not found; response body is determined by the hosting server"
          }
        }
      }
    },
    "/v1/manifest.json": {
      "get": {
        "summary": "Service manifest",
        "description": "Возможности и ограничения статического API.",
        "responses": {
          "200": {
            "description": "Static JSON document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "File not found; response body is determined by the hosting server"
          }
        }
      }
    },
    "/v1/libraries/dom-kit.json": {
      "get": {
        "summary": "Library metadata",
        "description": "Метаданные одной библиотеки.",
        "responses": {
          "200": {
            "description": "Static JSON document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "File not found; response body is determined by the hosting server"
          }
        }
      }
    },
    "/v1/libraries/dom-kit/1.1.0.json": {
      "get": {
        "summary": "Version metadata",
        "description": "Состав одной закреплённой версии.",
        "responses": {
          "200": {
            "description": "Static JSON document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "File not found; response body is determined by the hosting server"
          }
        }
      }
    },
    "/v1/libraries/{library}.json": {
      "get": {
        "summary": "One library",
        "parameters": [
          {
            "name": "library",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "dom-kit",
                "fetch-kit",
                "tiny-store",
                "event-bus",
                "ui-core",
                "motion-css"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Static JSON document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "File not found; response body is determined by the hosting server"
          }
        }
      }
    },
    "/v1/libraries/{library}/{version}.json": {
      "get": {
        "summary": "One library version",
        "parameters": [
          {
            "name": "library",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "dom-kit",
                "fetch-kit",
                "tiny-store",
                "event-bus",
                "ui-core",
                "motion-css"
              ]
            }
          },
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "1.0.0",
                "1.1.0"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Static JSON document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "404": {
            "description": "File not found; response body is determined by the hosting server"
          }
        }
      }
    }
  }
}
