{
  "version": "1.0",
  "modules": [
    {
      "name": "BMI Management",
      "prefix": "/bmi-management",
      "endpoints": [
        {
          "method": "POST",
          "path": "/bmi-categories",
          "summary": "Create BMI Category",
          "description": "Creates a new BMI category with specified name, min/max BMI ranges, description, and color code. Returns 409 if a category with the same name already exists.",
          "request_body": {
            "schema_name": "BmicategoryCreate",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "min_bmi",
                "type": "float",
                "required": false
              },
              {
                "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": false
              },
              {
                "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 its 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": false
              },
              {
                "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 minimum BMI value. 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": false
              },
              {
                "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. Validates that max_bmi is greater than min_bmi and that the name remains unique. Returns 404 if the category does not exist, 409 if the new name conflicts.",
          "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": false
              },
              {
                "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, 409 if the category is referenced by existing calculations.",
          "path_params": [
            {
              "name": "bmicategory_id",
              "type": "str"
            }
          ],
          "status_code": 204
        },
        {
          "method": "POST",
          "path": "/calculations",
          "summary": "Create Calculation",
          "description": "Creates a new BMI calculation record with user-provided height, weight, and units. Calculates BMI value, determines category, and stores the result. Enforces 50-calculation limit per session.",
          "request_body": {
            "schema_name": "CalculationCreate",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": false
              },
              {
                "name": "weight",
                "type": "float",
                "required": false
              },
              {
                "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": "CalculationResponse",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": false
              },
              {
                "name": "weight",
                "type": "float",
                "required": false
              },
              {
                "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": false
              },
              {
                "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 its 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": false
              },
              {
                "name": "weight",
                "type": "float",
                "required": false
              },
              {
                "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": false
              },
              {
                "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/{calculation_id}/details",
          "summary": "Get Calculation Details",
          "description": "Retrieves a calculation record 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": "height",
                "type": "float",
                "required": false
              },
              {
                "name": "weight",
                "type": "float",
                "required": false
              },
              {
                "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": false
              },
              {
                "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
              },
              {
                "name": "bmi_category",
                "type": "BmicategoryResponse",
                "required": true,
                "fields": [
                  {
                    "name": "name",
                    "type": "str",
                    "required": false
                  },
                  {
                    "name": "min_bmi",
                    "type": "float",
                    "required": false
                  },
                  {
                    "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": "/calculations",
          "summary": "List Calculations",
          "description": "Returns a paginated list of calculations in reverse chronological order. Optionally filters by session_id to retrieve calculation history for a specific user session. Includes BMI category name and color code.",
          "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": "CalculationListItemResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "height",
                "type": "float",
                "required": true
              },
              {
                "name": "weight",
                "type": "float",
                "required": true
              },
              {
                "name": "height_unit",
                "type": "str",
                "required": true
              },
              {
                "name": "weight_unit",
                "type": "str",
                "required": true
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              },
              {
                "name": "bmi_category_name",
                "type": "str",
                "required": true
              },
              {
                "name": "bmi_category_color_code",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "PUT",
          "path": "/calculations/{calculation_id}",
          "summary": "Update Calculation",
          "description": "Updates an existing calculation record. Validates that the referenced BMI category exists if bmi_category_id is changed. Returns 404 if the calculation does not exist.",
          "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": false
              },
              {
                "name": "weight",
                "type": "float",
                "required": false
              },
              {
                "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": false
              },
              {
                "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 single calculation record by ID. Returns 404 if the calculation does not exist.",
          "path_params": [
            {
              "name": "calculation_id",
              "type": "str"
            }
          ],
          "status_code": 204
        },
        {
          "method": "DELETE",
          "path": "/calculations",
          "summary": "Clear Calculation History",
          "description": "Deletes all calculation records for a given session_id. Used to clear user calculation history. Returns the count of deleted records.",
          "query_params": [
            {
              "name": "session_id",
              "type": "str",
              "required": false,
              "default": null
            }
          ],
          "response": {
            "schema_name": "dict",
            "is_list": false,
            "fields": []
          },
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/calculations/compute",
          "summary": "Compute BMI",
          "description": "Calculates BMI from user-provided height and weight inputs, converts to metric units, determines the appropriate BMI category, stores the calculation record, and returns the result with full category information. Enforces input validation and 50-calculation session limit.",
          "request_body": {
            "schema_name": "ComputeBMIRequest",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": false
              },
              {
                "name": "weight",
                "type": "float",
                "required": false
              },
              {
                "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": "ComputeBMIResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "height",
                "type": "float",
                "required": true
              },
              {
                "name": "weight",
                "type": "float",
                "required": true
              },
              {
                "name": "height_unit",
                "type": "str",
                "required": true
              },
              {
                "name": "weight_unit",
                "type": "str",
                "required": true
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": true
              },
              {
                "name": "bmi_category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "bmi_category_name",
                "type": "str",
                "required": true
              },
              {
                "name": "bmi_category_description",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "bmi_category_color_code",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "bmi_category_min_bmi",
                "type": "float",
                "required": true
              },
              {
                "name": "bmi_category_max_bmi",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 201
        }
      ]
    }
  ],
  "enums": {
    "HeightUnit": [
      "CM",
      "METERS",
      "FEET",
      "INCHES",
      "FEET_INCHES"
    ],
    "WeightUnit": [
      "KG",
      "LBS"
    ],
    "BMICategoryName": [
      "UNDERWEIGHT",
      "NORMAL_WEIGHT",
      "OVERWEIGHT",
      "OBESE"
    ]
  }
}
