{
  "version": "1.0",
  "modules": [
    {
      "name": "",
      "prefix": "",
      "endpoints": [
        {
          "method": "POST",
          "path": "/bmi-categories",
          "summary": "Create BMI Category",
          "description": "Creates a new BMI category with classification ranges. Returns 409 if a category with the same name already exists. Validates that min_bmi is non-negative and max_bmi is greater than min_bmi if provided.",
          "request_body": {
            "schema_name": "BmicategoryCreate",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "min_bmi",
                "type": "float",
                "required": true
              },
              {
                "name": "max_bmi",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "color_code",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "BmicategoryResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "min_bmi",
                "type": "float",
                "required": true
              },
              {
                "name": "max_bmi",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "color_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/bmi-categories/{bmicategory_id}",
          "summary": "Get BMI Category",
          "description": "Retrieves a single BMI category by ID. Returns 404 if the category does not exist.",
          "path_params": [
            {
              "name": "bmicategory_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "BmicategoryResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "min_bmi",
                "type": "float",
                "required": true
              },
              {
                "name": "max_bmi",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "color_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/bmi-categories",
          "summary": "List BMI Categories",
          "description": "Returns a paginated list of all BMI categories ordered by min_bmi ascending. Used to display available BMI classification ranges.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            }
          ],
          "response": {
            "schema_name": "BmicategoryResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "min_bmi",
                "type": "float",
                "required": true
              },
              {
                "name": "max_bmi",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "color_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/bmi-categories/{bmicategory_id}",
          "summary": "Update BMI Category",
          "description": "Updates an existing BMI category. Returns 404 if the category does not exist. Returns 409 if the new name conflicts with another category. Validates range constraints.",
          "path_params": [
            {
              "name": "bmicategory_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "BmicategoryUpdate",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "min_bmi",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "max_bmi",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "color_code",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "BmicategoryResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "min_bmi",
                "type": "float",
                "required": true
              },
              {
                "name": "max_bmi",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "color_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/bmi-categories/{bmicategory_id}",
          "summary": "Delete BMI Category",
          "description": "Deletes a BMI category by ID. Returns 404 if the category does not exist. Returns 409 if the category is referenced by existing calculations (ON DELETE RESTRICT).",
          "path_params": [
            {
              "name": "bmicategory_id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/calculations",
          "summary": "Create Calculation",
          "description": "Creates a new BMI calculation record. Validates that the bmi_category_id references an existing category. Returns 404 if the category does not exist.",
          "request_body": {
            "schema_name": "CalculationCreate",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": true
              },
              {
                "name": "weight",
                "type": "float",
                "required": true
              },
              {
                "name": "height_unit",
                "type": "HeightUnit",
                "required": true,
                "enum_values": [
                  "CM",
                  "METERS",
                  "FEET",
                  "INCHES",
                  "FEET_INCHES"
                ]
              },
              {
                "name": "weight_unit",
                "type": "WeightUnit",
                "required": true,
                "enum_values": [
                  "KG",
                  "LBS"
                ]
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": true
              },
              {
                "name": "bmi_category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "session_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              }
            ]
          },
          "response": {
            "schema_name": "CalculationResponse",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": true
              },
              {
                "name": "weight",
                "type": "float",
                "required": true
              },
              {
                "name": "height_unit",
                "type": "HeightUnit",
                "required": true,
                "enum_values": [
                  "CM",
                  "METERS",
                  "FEET",
                  "INCHES",
                  "FEET_INCHES"
                ]
              },
              {
                "name": "weight_unit",
                "type": "WeightUnit",
                "required": true,
                "enum_values": [
                  "KG",
                  "LBS"
                ]
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": true
              },
              {
                "name": "bmi_category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "session_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "GET",
          "path": "/calculations/{calculation_id}",
          "summary": "Get Calculation",
          "description": "Retrieves a single calculation record by ID. Returns 404 if the calculation does not exist.",
          "path_params": [
            {
              "name": "calculation_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "CalculationResponse",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": true
              },
              {
                "name": "weight",
                "type": "float",
                "required": true
              },
              {
                "name": "height_unit",
                "type": "HeightUnit",
                "required": true,
                "enum_values": [
                  "CM",
                  "METERS",
                  "FEET",
                  "INCHES",
                  "FEET_INCHES"
                ]
              },
              {
                "name": "weight_unit",
                "type": "WeightUnit",
                "required": true,
                "enum_values": [
                  "KG",
                  "LBS"
                ]
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": true
              },
              {
                "name": "bmi_category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "session_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/calculations",
          "summary": "List Calculations",
          "description": "Returns a paginated list of calculations ordered by timestamp descending. Supports optional session_id filter to retrieve calculations for a specific session. Includes BMI category name and color code for display.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "session_id",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "CalculationResponse",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": true
              },
              {
                "name": "weight",
                "type": "float",
                "required": true
              },
              {
                "name": "height_unit",
                "type": "HeightUnit",
                "required": true,
                "enum_values": [
                  "CM",
                  "METERS",
                  "FEET",
                  "INCHES",
                  "FEET_INCHES"
                ]
              },
              {
                "name": "weight_unit",
                "type": "WeightUnit",
                "required": true,
                "enum_values": [
                  "KG",
                  "LBS"
                ]
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": true
              },
              {
                "name": "bmi_category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "session_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/calculations/{calculation_id}",
          "summary": "Update Calculation",
          "description": "Updates an existing calculation record. Returns 404 if the calculation or referenced BMI category does not exist. Validates all field constraints.",
          "path_params": [
            {
              "name": "calculation_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "CalculationUpdate",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "weight",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "height_unit",
                "type": "HeightUnit",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "CM",
                  "METERS",
                  "FEET",
                  "INCHES",
                  "FEET_INCHES"
                ]
              },
              {
                "name": "weight_unit",
                "type": "WeightUnit",
                "required": false,
                "nullable": true,
                "enum_values": [
                  "KG",
                  "LBS"
                ]
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "bmi_category_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "session_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "CalculationResponse",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": true
              },
              {
                "name": "weight",
                "type": "float",
                "required": true
              },
              {
                "name": "height_unit",
                "type": "HeightUnit",
                "required": true,
                "enum_values": [
                  "CM",
                  "METERS",
                  "FEET",
                  "INCHES",
                  "FEET_INCHES"
                ]
              },
              {
                "name": "weight_unit",
                "type": "WeightUnit",
                "required": true,
                "enum_values": [
                  "KG",
                  "LBS"
                ]
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": true
              },
              {
                "name": "bmi_category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "session_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/calculations/{calculation_id}",
          "summary": "Delete Calculation",
          "description": "Deletes a calculation record by ID. Returns 404 if the calculation does not exist.",
          "path_params": [
            {
              "name": "calculation_id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/calculations/{calculation_id}/details",
          "summary": "Get Calculation Details",
          "description": "Retrieves a calculation with full BMI category details including name, description, color code, and min/max BMI ranges. Returns 404 if the calculation does not exist.",
          "path_params": [
            {
              "name": "calculation_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "CalculationDetailResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "height",
                "type": "float",
                "required": true
              },
              {
                "name": "weight",
                "type": "float",
                "required": true
              },
              {
                "name": "height_unit",
                "type": "HeightUnit",
                "required": true,
                "enum_values": [
                  "CM",
                  "METERS",
                  "FEET",
                  "INCHES",
                  "FEET_INCHES"
                ]
              },
              {
                "name": "weight_unit",
                "type": "WeightUnit",
                "required": true,
                "enum_values": [
                  "KG",
                  "LBS"
                ]
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": true
              },
              {
                "name": "session_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "bmi_category",
                "type": "BmicategoryResponse",
                "required": true,
                "fields": [
                  {
                    "name": "name",
                    "type": "str",
                    "required": false
                  },
                  {
                    "name": "min_bmi",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "max_bmi",
                    "type": "float",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "description",
                    "type": "str",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "color_code",
                    "type": "str",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "created_at",
                    "type": "datetime",
                    "required": true
                  },
                  {
                    "name": "updated_at",
                    "type": "datetime",
                    "required": true
                  }
                ]
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/calculations/calculate",
          "summary": "Calculate BMI",
          "description": "Calculates BMI from user height and weight inputs, converts to metric units, determines the appropriate BMI category, and stores the calculation record. Returns the result with full category details. Enforces a maximum of 50 calculations per session, removing the oldest when the limit is exceeded. Returns 400 if inputs are invalid or calculated BMI is outside the valid range (10.0-100.0).",
          "request_body": {
            "schema_name": "CalculateBMIRequest",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": true
              },
              {
                "name": "weight",
                "type": "float",
                "required": true
              },
              {
                "name": "height_unit",
                "type": "HeightUnit",
                "required": true,
                "enum_values": [
                  "CM",
                  "METERS",
                  "FEET",
                  "INCHES",
                  "FEET_INCHES"
                ]
              },
              {
                "name": "weight_unit",
                "type": "WeightUnit",
                "required": true,
                "enum_values": [
                  "KG",
                  "LBS"
                ]
              },
              {
                "name": "session_id",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "CalculateBMIResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "height",
                "type": "float",
                "required": true
              },
              {
                "name": "weight",
                "type": "float",
                "required": true
              },
              {
                "name": "height_unit",
                "type": "HeightUnit",
                "required": true,
                "enum_values": [
                  "CM",
                  "METERS",
                  "FEET",
                  "INCHES",
                  "FEET_INCHES"
                ]
              },
              {
                "name": "weight_unit",
                "type": "WeightUnit",
                "required": true,
                "enum_values": [
                  "KG",
                  "LBS"
                ]
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": true
              },
              {
                "name": "session_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              },
              {
                "name": "bmi_category",
                "type": "BmicategoryResponse",
                "required": true,
                "fields": [
                  {
                    "name": "name",
                    "type": "str",
                    "required": false
                  },
                  {
                    "name": "min_bmi",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "max_bmi",
                    "type": "float",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "description",
                    "type": "str",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "color_code",
                    "type": "str",
                    "required": false,
                    "nullable": true
                  },
                  {
                    "name": "id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "created_at",
                    "type": "datetime",
                    "required": true
                  },
                  {
                    "name": "updated_at",
                    "type": "datetime",
                    "required": true
                  }
                ]
              }
            ],
            "is_list": false
          },
          "status_code": 201
        },
        {
          "method": "DELETE",
          "path": "/calculations/history",
          "summary": "Clear Calculation History",
          "description": "Deletes all calculation records for a given session_id. Returns the count of deleted records. Returns 400 if session_id is not provided.",
          "query_params": [
            {
              "name": "session_id",
              "type": "str",
              "required": false,
              "default": null
            }
          ],
          "status_code": 200
        }
      ]
    }
  ],
  "enums": {
    "HeightUnit": [
      "CM",
      "METERS",
      "FEET",
      "INCHES",
      "FEET_INCHES"
    ],
    "WeightUnit": [
      "KG",
      "LBS"
    ],
    "BMICategoryName": [
      "UNDERWEIGHT",
      "NORMAL_WEIGHT",
      "OVERWEIGHT",
      "OBESE"
    ]
  }
}
