{
  "openapi": "3.1.0",
  "info": {
    "title": "SnabExpertKZ & КЗЭ ДимАл - Инженерный подбор оборудования",
    "version": "1.0.0",
    "description": "API-спецификация для автономных AI-агентов, систем CPQ и проектировщиков. Позволяет получить данные каталога и произвести расчет совместимости грузоподъемного электромагнита с краном по правилам ПБ 10-382-00.",
    "contact": {
      "name": "ТОО SnabExpertKZ",
      "email": "kzsnabexpert@gmail.com",
      "url": "https://snabexpert.kz"
    }
  },
  "servers": [
    {
      "url": "https://snabexpert.kz",
      "description": "Основной веб-сервер"
    }
  ],
  "paths": {
    "/catalog.json": {
      "get": {
        "summary": "Получить полный машиночитаемый каталог оборудования «ДимАл»",
        "description": "Возвращает исчерпывающие технические характеристики серий ДКМ, ДПМ, ДЖС, ДГМ, ПНС в формате JSON.",
        "operationId": "getCatalog",
        "responses": {
          "200": {
            "description": "Каталог успешно получен",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculate-matching": {
      "get": {
        "summary": "Расчет совместимости магнита с краном (ПБ 10-382-00)",
        "description": "Вычисляет оптимальную модель электромагнита ДКМ или ДПМ по тоннажу крана, типу груза и коэффициенту запаса грузоподъемности.",
        "operationId": "calculateCraneMatching",
        "parameters": [
          {
            "name": "crane_capacity_ton",
            "in": "query",
            "required": true,
            "description": "Паспортная грузоподъемность крюка крана в тоннах (от 3.2 до 50 т)",
            "schema": { "type": "number", "minimum": 3.2, "maximum": 50, "default": 16 }
          },
          {
            "name": "cargo_type",
            "in": "query",
            "required": true,
            "description": "Категория перемещаемого груза",
            "schema": {
              "type": "string",
              "enum": ["scrap_heavy", "scrap_light", "pig_iron", "slabs", "pipes", "sheets"],
              "default": "scrap_heavy"
            }
          },
          {
            "name": "duty_cycle",
            "in": "query",
            "required": false,
            "description": "Режим работы и термостойкость",
            "schema": {
              "type": "string",
              "enum": ["standard", "pv75", "hot"],
              "default": "standard"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Результат подбора оборудования",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "recommended_magnet": { "type": "string", "example": "ДКМ165С-У1" },
                    "payload_kg": { "type": "integer", "example": 2000 },
                    "total_hook_load_kg": { "type": "integer", "example": 5850 },
                    "crane_reserve_percent": { "type": "integer", "example": 63 },
                    "recommended_cabinet": { "type": "string", "example": "ПНС-100" },
                    "recommended_ups": { "type": "string", "example": "ИБП-100" },
                    "pb_10_382_compliant": { "type": "boolean", "example": true }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
