{
  "version": "1.0",
  "modules": [
    {
      "name": "Measurement Units",
      "prefix": "/measurement-units",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create Measurement Unit",
          "description": "Creates a new measurement unit record with system type, available units, and default units. Validates that system is either metric or imperial and that all unit values are valid.",
          "request_body": {
            "schema_name": "MeasurementunitCreate",
            "fields": [
              {
                "name": "system",
                "type": "str",
                "required": true
              },
              {
                "name": "height_units",
                "type": "List[str]",
                "required": true
              },
              {
                "name": "weight_units",
                "type": "List[str]",
                "required": true
              },
              {
                "name": "default_height_unit",
                "type": "str",
                "required": true
              },
              {
                "name": "default_weight_unit",
                "type": "str",
                "required": true
              }
            ]
          },
          "response": {
            "schema_name": "MeasurementunitResponse",
            "fields": [
              {
                "name": "system",
                "type": "str",
                "required": true
              },
              {
                "name": "height_units",
                "type": "List[str]",
                "required": true
              },
              {
                "name": "weight_units",
                "type": "List[str]",
                "required": true
              },
              {
                "name": "default_height_unit",
                "type": "str",
                "required": true
              },
              {
                "name": "default_weight_unit",
                "type": "str",
                "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": "/{measurementunit_id}",
          "summary": "Get Measurement Unit",
          "description": "Retrieves a single measurement unit by ID. Returns 404 if the measurement unit does not exist.",
          "path_params": [
            {
              "name": "measurementunit_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "MeasurementunitResponse",
            "fields": [
              {
                "name": "system",
                "type": "str",
                "required": true
              },
              {
                "name": "height_units",
                "type": "List[str]",
                "required": true
              },
              {
                "name": "weight_units",
                "type": "List[str]",
                "required": true
              },
              {
                "name": "default_height_unit",
                "type": "str",
                "required": true
              },
              {
                "name": "default_weight_unit",
                "type": "str",
                "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": "/",
          "summary": "List Measurement Units",
          "description": "Returns a paginated list of measurement units. Supports optional filtering by system type (metric or imperial).",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "system",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "MeasurementunitResponse",
            "fields": [
              {
                "name": "system",
                "type": "str",
                "required": true
              },
              {
                "name": "height_units",
                "type": "List[str]",
                "required": true
              },
              {
                "name": "weight_units",
                "type": "List[str]",
                "required": true
              },
              {
                "name": "default_height_unit",
                "type": "str",
                "required": true
              },
              {
                "name": "default_weight_unit",
                "type": "str",
                "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": "/{measurementunit_id}",
          "summary": "Update Measurement Unit",
          "description": "Updates an existing measurement unit. Only provided fields are updated. Returns 404 if the measurement unit does not exist.",
          "path_params": [
            {
              "name": "measurementunit_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "MeasurementunitUpdate",
            "fields": [
              {
                "name": "system",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "height_units",
                "type": "List[str]",
                "required": false,
                "nullable": true
              },
              {
                "name": "weight_units",
                "type": "List[str]",
                "required": false,
                "nullable": true
              },
              {
                "name": "default_height_unit",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "default_weight_unit",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "MeasurementunitResponse",
            "fields": [
              {
                "name": "system",
                "type": "str",
                "required": true
              },
              {
                "name": "height_units",
                "type": "List[str]",
                "required": true
              },
              {
                "name": "weight_units",
                "type": "List[str]",
                "required": true
              },
              {
                "name": "default_height_unit",
                "type": "str",
                "required": true
              },
              {
                "name": "default_weight_unit",
                "type": "str",
                "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": "/{measurementunit_id}",
          "summary": "Delete Measurement Unit",
          "description": "Deletes a measurement unit by ID. Returns 404 if the measurement unit does not exist.",
          "path_params": [
            {
              "name": "measurementunit_id",
              "type": "str"
            }
          ],
          "status_code": 200
        }
      ]
    },
    {
      "name": "BMI",
      "prefix": "/bmi",
      "endpoints": [
        {
          "method": "POST",
          "path": "/categories",
          "summary": "Create BMI Category",
          "description": "Creates a new BMI category with specified range and health information. Returns 409 if a category with the same name already exists. Validates that max_bmi is greater than min_bmi when provided.",
          "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
              },
              {
                "name": "color_code",
                "type": "str",
                "required": false
              }
            ]
          },
          "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
              },
              {
                "name": "color_code",
                "type": "str",
                "required": false
              },
              {
                "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": "/categories/{category_id}",
          "summary": "Get BMI Category",
          "description": "Retrieves a single BMI category by ID. Returns 404 if the category does not exist.",
          "path_params": [
            {
              "name": "category_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
              },
              {
                "name": "color_code",
                "type": "str",
                "required": false
              },
              {
                "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": "/categories",
          "summary": "List BMI Categories",
          "description": "Returns a paginated list of all BMI categories ordered by minimum BMI value. Used to display available health categories and their 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
              },
              {
                "name": "color_code",
                "type": "str",
                "required": false
              },
              {
                "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": "/categories/{category_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 that max_bmi is greater than min_bmi.",
          "path_params": [
            {
              "name": "category_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
              },
              {
                "name": "color_code",
                "type": "str",
                "required": false
              },
              {
                "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": "/categories/{category_id}",
          "summary": "Delete BMI Category",
          "description": "Deletes a BMI category by ID. Returns 404 if the category does not exist. May fail if calculations reference this category.",
          "path_params": [
            {
              "name": "category_id",
              "type": "str"
            }
          ],
          "status_code": 204
        },
        {
          "method": "POST",
          "path": "/calculations",
          "summary": "Create Calculation",
          "description": "Creates a new BMI calculation record. Validates that the referenced category exists. Returns 404 if the category is not found.",
          "request_body": {
            "schema_name": "CalculationCreate",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": false
              },
              {
                "name": "weight",
                "type": "float",
                "required": false
              },
              {
                "name": "height_unit",
                "type": "str",
                "required": false
              },
              {
                "name": "weight_unit",
                "type": "str",
                "required": false
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": false
              },
              {
                "name": "category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              }
            ]
          },
          "response": {
            "schema_name": "CalculationResponse",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": false
              },
              {
                "name": "weight",
                "type": "float",
                "required": false
              },
              {
                "name": "height_unit",
                "type": "str",
                "required": false
              },
              {
                "name": "weight_unit",
                "type": "str",
                "required": false
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": false
              },
              {
                "name": "category_id",
                "type": "str",
                "required": 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 BMI calculation 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": false
              },
              {
                "name": "weight",
                "type": "float",
                "required": false
              },
              {
                "name": "height_unit",
                "type": "str",
                "required": false
              },
              {
                "name": "weight_unit",
                "type": "str",
                "required": false
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": false
              },
              {
                "name": "category_id",
                "type": "str",
                "required": 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 BMI calculations in reverse chronological order. Used to display calculation history.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            }
          ],
          "response": {
            "schema_name": "CalculationResponse",
            "fields": [
              {
                "name": "height",
                "type": "float",
                "required": false
              },
              {
                "name": "weight",
                "type": "float",
                "required": false
              },
              {
                "name": "height_unit",
                "type": "str",
                "required": false
              },
              {
                "name": "weight_unit",
                "type": "str",
                "required": false
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": false
              },
              {
                "name": "category_id",
                "type": "str",
                "required": 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 BMI calculation. Returns 404 if the calculation or referenced category does not exist. Validates that the new category_id exists if provided.",
          "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": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "weight_unit",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "category_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": "str",
                "required": false
              },
              {
                "name": "weight_unit",
                "type": "str",
                "required": false
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": false
              },
              {
                "name": "category_id",
                "type": "str",
                "required": 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 BMI calculation by ID. Returns 404 if the calculation does not exist.",
          "path_params": [
            {
              "name": "calculation_id",
              "type": "str"
            }
          ],
          "status_code": 204
        },
        {
          "method": "GET",
          "path": "/calculations/{calculation_id}/details",
          "summary": "Get Calculation Details",
          "description": "Retrieves a single BMI calculation with full category information including name, description, color code, and BMI range. 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": "str",
                "required": true
              },
              {
                "name": "weight_unit",
                "type": "str",
                "required": true
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": true
              },
              {
                "name": "category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "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
                  },
                  {
                    "name": "color_code",
                    "type": "str",
                    "required": false
                  },
                  {
                    "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": "/calculate",
          "summary": "Calculate BMI",
          "description": "Calculates BMI from height and weight inputs, converts measurements to metric, determines the appropriate health category, and stores the calculation. Returns the calculation with full category details. Returns 400 if measurements are out of valid range or no matching category exists.",
          "query_params": [
            {
              "name": "height",
              "type": "float",
              "required": false,
              "default": null
            },
            {
              "name": "weight",
              "type": "float",
              "required": false,
              "default": null
            },
            {
              "name": "height_unit",
              "type": "str",
              "required": false,
              "default": null
            },
            {
              "name": "weight_unit",
              "type": "str",
              "required": false,
              "default": null
            }
          ],
          "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": "str",
                "required": true
              },
              {
                "name": "weight_unit",
                "type": "str",
                "required": true
              },
              {
                "name": "bmi_value",
                "type": "float",
                "required": true
              },
              {
                "name": "category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "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
                  },
                  {
                    "name": "color_code",
                    "type": "str",
                    "required": false
                  },
                  {
                    "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": "/history",
          "summary": "Get Calculation History",
          "description": "Returns a paginated list of BMI calculations with category name and color code in reverse chronological order. Used to display user calculation history with visual category indicators.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            }
          ],
          "response": {
            "schema_name": "CalculationWithCategoryResponse",
            "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": "category_id",
                "type": "str",
                "required": true
              },
              {
                "name": "timestamp",
                "type": "datetime",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "category_name",
                "type": "str",
                "required": true
              },
              {
                "name": "category_color_code",
                "type": "str",
                "required": true
              }
            ],
            "is_list": true
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/history",
          "summary": "Clear Calculation History",
          "description": "Deletes all BMI calculations from the database. Returns the count of deleted records. This operation cannot be undone.",
          "status_code": 200
        }
      ]
    }
  ],
  "enums": {
    "MeasurementSystem": [
      "METRIC",
      "IMPERIAL"
    ],
    "HeightUnit": [
      "CM",
      "M",
      "FT",
      "IN"
    ],
    "WeightUnit": [
      "KG",
      "LBS"
    ]
  }
}
