{
  "version": "1.0",
  "modules": [
    {
      "name": "Calculation",
      "prefix": "/calculation",
      "endpoints": [
        {
          "method": "POST",
          "path": "/sessions",
          "summary": "Create Calculation Session",
          "description": "Creates a new calculation session for tracking anonymous user activity. Returns 409 if session_id already exists.",
          "request_body": {
            "schema_name": "CalculationsessionCreate",
            "fields": [
              {
                "name": "session_id",
                "type": "str",
                "required": true
              },
              {
                "name": "first_access_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "last_access_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "calculation_count",
                "type": "int",
                "required": true
              },
              {
                "name": "user_agent",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "ip_address",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "CalculationsessionResponse",
            "fields": [
              {
                "name": "session_id",
                "type": "str",
                "required": true
              },
              {
                "name": "first_access_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "last_access_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "calculation_count",
                "type": "int",
                "required": true
              },
              {
                "name": "user_agent",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "ip_address",
                "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": "/sessions",
          "summary": "List Calculation Sessions",
          "description": "Returns a paginated list of calculation sessions. Supports optional filter by session_id.",
          "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": "CalculationsessionResponse",
            "fields": [
              {
                "name": "session_id",
                "type": "str",
                "required": true
              },
              {
                "name": "first_access_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "last_access_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "calculation_count",
                "type": "int",
                "required": true
              },
              {
                "name": "user_agent",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "ip_address",
                "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": "GET",
          "path": "/sessions/{id}",
          "summary": "Get Calculation Session",
          "description": "Returns a single calculation session by ID. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "CalculationsessionResponse",
            "fields": [
              {
                "name": "session_id",
                "type": "str",
                "required": true
              },
              {
                "name": "first_access_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "last_access_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "calculation_count",
                "type": "int",
                "required": true
              },
              {
                "name": "user_agent",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "ip_address",
                "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": "PUT",
          "path": "/sessions/{id}",
          "summary": "Update Calculation Session",
          "description": "Updates an existing calculation session. Only provided fields are updated. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "CalculationsessionUpdate",
            "fields": [
              {
                "name": "session_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "first_access_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "last_access_at",
                "type": "datetime",
                "required": false,
                "nullable": true
              },
              {
                "name": "calculation_count",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "user_agent",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "ip_address",
                "type": "str",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "CalculationsessionResponse",
            "fields": [
              {
                "name": "session_id",
                "type": "str",
                "required": true
              },
              {
                "name": "first_access_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "last_access_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "calculation_count",
                "type": "int",
                "required": true
              },
              {
                "name": "user_agent",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "ip_address",
                "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": "/sessions/{id}",
          "summary": "Delete Calculation Session",
          "description": "Deletes a calculation session and all associated calculations and amortization entries. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/calculations",
          "summary": "List Calculations",
          "description": "Returns a paginated list of calculations. Supports optional filter by session_id.",
          "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": "session_id",
                "type": "str",
                "required": true
              },
              {
                "name": "principal",
                "type": "float",
                "required": true
              },
              {
                "name": "annual_interest_rate",
                "type": "float",
                "required": true
              },
              {
                "name": "loan_term_months",
                "type": "int",
                "required": true
              },
              {
                "name": "monthly_payment",
                "type": "float",
                "required": true
              },
              {
                "name": "total_interest",
                "type": "float",
                "required": true
              },
              {
                "name": "total_amount",
                "type": "float",
                "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": "GET",
          "path": "/calculations/{id}",
          "summary": "Get Calculation",
          "description": "Returns a single calculation by ID without amortization entries. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "CalculationResponse",
            "fields": [
              {
                "name": "session_id",
                "type": "str",
                "required": true
              },
              {
                "name": "principal",
                "type": "float",
                "required": true
              },
              {
                "name": "annual_interest_rate",
                "type": "float",
                "required": true
              },
              {
                "name": "loan_term_months",
                "type": "int",
                "required": true
              },
              {
                "name": "monthly_payment",
                "type": "float",
                "required": true
              },
              {
                "name": "total_interest",
                "type": "float",
                "required": true
              },
              {
                "name": "total_amount",
                "type": "float",
                "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/{id}/details",
          "summary": "Get Calculation With Details",
          "description": "Returns a calculation with full amortization schedule including all payment details for each period. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "CalculationDetailsResponse",
            "fields": [
              {
                "name": "session_id",
                "type": "str",
                "required": true
              },
              {
                "name": "principal",
                "type": "float",
                "required": true
              },
              {
                "name": "annual_interest_rate",
                "type": "float",
                "required": true
              },
              {
                "name": "loan_term_months",
                "type": "int",
                "required": true
              },
              {
                "name": "monthly_payment",
                "type": "float",
                "required": true
              },
              {
                "name": "total_interest",
                "type": "float",
                "required": true
              },
              {
                "name": "total_amount",
                "type": "float",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "amortization_entries",
                "type": "List[AmortizationentryResponse]",
                "required": false,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "calculation_id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "payment_number",
                    "type": "int",
                    "required": true
                  },
                  {
                    "name": "payment_date",
                    "type": "date",
                    "required": true
                  },
                  {
                    "name": "beginning_balance",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "payment_amount",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "principal_portion",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "interest_portion",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "ending_balance",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "cumulative_interest",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "cumulative_principal",
                    "type": "float",
                    "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/{id}",
          "summary": "Delete Calculation",
          "description": "Deletes a calculation and all associated amortization entries. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/amortization-entries",
          "summary": "Create Amortization Entry",
          "description": "Creates a new amortization entry for a calculation. Validates that the calculation exists. Returns 404 if calculation not found.",
          "request_body": {
            "schema_name": "AmortizationentryCreate",
            "fields": [
              {
                "name": "calculation_id",
                "type": "str",
                "required": true
              },
              {
                "name": "payment_number",
                "type": "int",
                "required": true
              },
              {
                "name": "payment_date",
                "type": "date",
                "required": true
              },
              {
                "name": "beginning_balance",
                "type": "float",
                "required": true
              },
              {
                "name": "payment_amount",
                "type": "float",
                "required": true
              },
              {
                "name": "principal_portion",
                "type": "float",
                "required": true
              },
              {
                "name": "interest_portion",
                "type": "float",
                "required": true
              },
              {
                "name": "ending_balance",
                "type": "float",
                "required": true
              },
              {
                "name": "cumulative_interest",
                "type": "float",
                "required": true
              },
              {
                "name": "cumulative_principal",
                "type": "float",
                "required": true
              }
            ]
          },
          "response": {
            "schema_name": "AmortizationentryResponse",
            "fields": [
              {
                "name": "calculation_id",
                "type": "str",
                "required": true
              },
              {
                "name": "payment_number",
                "type": "int",
                "required": true
              },
              {
                "name": "payment_date",
                "type": "date",
                "required": true
              },
              {
                "name": "beginning_balance",
                "type": "float",
                "required": true
              },
              {
                "name": "payment_amount",
                "type": "float",
                "required": true
              },
              {
                "name": "principal_portion",
                "type": "float",
                "required": true
              },
              {
                "name": "interest_portion",
                "type": "float",
                "required": true
              },
              {
                "name": "ending_balance",
                "type": "float",
                "required": true
              },
              {
                "name": "cumulative_interest",
                "type": "float",
                "required": true
              },
              {
                "name": "cumulative_principal",
                "type": "float",
                "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": "/amortization-entries",
          "summary": "List Amortization Entries",
          "description": "Returns a paginated list of amortization entries ordered by payment number. Supports optional filter by calculation_id.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            },
            {
              "name": "calculation_id",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "AmortizationentryResponse",
            "fields": [
              {
                "name": "calculation_id",
                "type": "str",
                "required": true
              },
              {
                "name": "payment_number",
                "type": "int",
                "required": true
              },
              {
                "name": "payment_date",
                "type": "date",
                "required": true
              },
              {
                "name": "beginning_balance",
                "type": "float",
                "required": true
              },
              {
                "name": "payment_amount",
                "type": "float",
                "required": true
              },
              {
                "name": "principal_portion",
                "type": "float",
                "required": true
              },
              {
                "name": "interest_portion",
                "type": "float",
                "required": true
              },
              {
                "name": "ending_balance",
                "type": "float",
                "required": true
              },
              {
                "name": "cumulative_interest",
                "type": "float",
                "required": true
              },
              {
                "name": "cumulative_principal",
                "type": "float",
                "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": "GET",
          "path": "/amortization-entries/{id}",
          "summary": "Get Amortization Entry",
          "description": "Returns a single amortization entry by ID. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "AmortizationentryResponse",
            "fields": [
              {
                "name": "calculation_id",
                "type": "str",
                "required": true
              },
              {
                "name": "payment_number",
                "type": "int",
                "required": true
              },
              {
                "name": "payment_date",
                "type": "date",
                "required": true
              },
              {
                "name": "beginning_balance",
                "type": "float",
                "required": true
              },
              {
                "name": "payment_amount",
                "type": "float",
                "required": true
              },
              {
                "name": "principal_portion",
                "type": "float",
                "required": true
              },
              {
                "name": "interest_portion",
                "type": "float",
                "required": true
              },
              {
                "name": "ending_balance",
                "type": "float",
                "required": true
              },
              {
                "name": "cumulative_interest",
                "type": "float",
                "required": true
              },
              {
                "name": "cumulative_principal",
                "type": "float",
                "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": "PUT",
          "path": "/amortization-entries/{id}",
          "summary": "Update Amortization Entry",
          "description": "Updates an existing amortization entry. Only provided fields are updated. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "AmortizationentryUpdate",
            "fields": [
              {
                "name": "calculation_id",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "payment_number",
                "type": "int",
                "required": false,
                "nullable": true
              },
              {
                "name": "payment_date",
                "type": "date",
                "required": false,
                "nullable": true
              },
              {
                "name": "beginning_balance",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "payment_amount",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "principal_portion",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "interest_portion",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "ending_balance",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "cumulative_interest",
                "type": "float",
                "required": false,
                "nullable": true
              },
              {
                "name": "cumulative_principal",
                "type": "float",
                "required": false,
                "nullable": true
              }
            ]
          },
          "response": {
            "schema_name": "AmortizationentryResponse",
            "fields": [
              {
                "name": "calculation_id",
                "type": "str",
                "required": true
              },
              {
                "name": "payment_number",
                "type": "int",
                "required": true
              },
              {
                "name": "payment_date",
                "type": "date",
                "required": true
              },
              {
                "name": "beginning_balance",
                "type": "float",
                "required": true
              },
              {
                "name": "payment_amount",
                "type": "float",
                "required": true
              },
              {
                "name": "principal_portion",
                "type": "float",
                "required": true
              },
              {
                "name": "interest_portion",
                "type": "float",
                "required": true
              },
              {
                "name": "ending_balance",
                "type": "float",
                "required": true
              },
              {
                "name": "cumulative_interest",
                "type": "float",
                "required": true
              },
              {
                "name": "cumulative_principal",
                "type": "float",
                "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": "/amortization-entries/{id}",
          "summary": "Delete Amortization Entry",
          "description": "Deletes an amortization entry. Returns 404 if not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "status_code": 200
        },
        {
          "method": "POST",
          "path": "/calculations/calculate",
          "summary": "Perform Loan Calculation",
          "description": "Performs a complete loan calculation including monthly payment, total interest, and generates full amortization schedule. Validates all inputs against business rules, creates calculation record and all amortization entries in a single transaction, updates session calculation count. Returns 400 for validation errors, 404 if session not found.",
          "request_body": {
            "schema_name": "CalculationInputSchema",
            "fields": [
              {
                "name": "principal",
                "type": "float",
                "required": true
              },
              {
                "name": "annual_interest_rate",
                "type": "float",
                "required": true
              },
              {
                "name": "loan_term_months",
                "type": "int",
                "required": true
              },
              {
                "name": "session_id",
                "type": "str",
                "required": true
              }
            ]
          },
          "response": {
            "schema_name": "CalculationDetailsResponse",
            "fields": [
              {
                "name": "session_id",
                "type": "str",
                "required": true
              },
              {
                "name": "principal",
                "type": "float",
                "required": true
              },
              {
                "name": "annual_interest_rate",
                "type": "float",
                "required": true
              },
              {
                "name": "loan_term_months",
                "type": "int",
                "required": true
              },
              {
                "name": "monthly_payment",
                "type": "float",
                "required": true
              },
              {
                "name": "total_interest",
                "type": "float",
                "required": true
              },
              {
                "name": "total_amount",
                "type": "float",
                "required": true
              },
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "amortization_entries",
                "type": "List[AmortizationentryResponse]",
                "required": false,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "calculation_id",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "payment_number",
                    "type": "int",
                    "required": true
                  },
                  {
                    "name": "payment_date",
                    "type": "date",
                    "required": true
                  },
                  {
                    "name": "beginning_balance",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "payment_amount",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "principal_portion",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "interest_portion",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "ending_balance",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "cumulative_interest",
                    "type": "float",
                    "required": true
                  },
                  {
                    "name": "cumulative_principal",
                    "type": "float",
                    "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": "POST",
          "path": "/sessions/create-or-retrieve",
          "summary": "Create Or Retrieve Session",
          "description": "Creates a new anonymous session or retrieves existing session by session_id. Updates last_access_at timestamp if session exists. Used for session initialization and tracking.",
          "query_params": [
            {
              "name": "session_id",
              "type": "str",
              "required": false,
              "default": null
            },
            {
              "name": "user_agent",
              "type": "str",
              "required": false
            },
            {
              "name": "ip_address",
              "type": "str",
              "required": false
            }
          ],
          "response": {
            "schema_name": "CalculationsessionResponse",
            "fields": [
              {
                "name": "session_id",
                "type": "str",
                "required": true
              },
              {
                "name": "first_access_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "last_access_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "calculation_count",
                "type": "int",
                "required": true
              },
              {
                "name": "user_agent",
                "type": "str",
                "required": false,
                "nullable": true
              },
              {
                "name": "ip_address",
                "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": "/sessions/{session_id}/calculations",
          "summary": "Get Session Calculations",
          "description": "Returns all calculations performed in a specific session, ordered by creation date descending. Supports pagination. Returns 404 if session not found.",
          "path_params": [
            {
              "name": "session_id",
              "type": "str"
            }
          ],
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            }
          ],
          "response": {
            "schema_name": "CalculationResponse",
            "fields": [
              {
                "name": "session_id",
                "type": "str",
                "required": true
              },
              {
                "name": "principal",
                "type": "float",
                "required": true
              },
              {
                "name": "annual_interest_rate",
                "type": "float",
                "required": true
              },
              {
                "name": "loan_term_months",
                "type": "int",
                "required": true
              },
              {
                "name": "monthly_payment",
                "type": "float",
                "required": true
              },
              {
                "name": "total_interest",
                "type": "float",
                "required": true
              },
              {
                "name": "total_amount",
                "type": "float",
                "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": "GET",
          "path": "/calculations/{id}/amortization",
          "summary": "Get Calculation Amortization Schedule",
          "description": "Returns the complete amortization schedule for a calculation, ordered by payment number. Returns 404 if calculation not found.",
          "path_params": [
            {
              "name": "id",
              "type": "str"
            }
          ],
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 600
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            }
          ],
          "response": {
            "schema_name": "AmortizationentryResponse",
            "fields": [
              {
                "name": "calculation_id",
                "type": "str",
                "required": true
              },
              {
                "name": "payment_number",
                "type": "int",
                "required": true
              },
              {
                "name": "payment_date",
                "type": "date",
                "required": true
              },
              {
                "name": "beginning_balance",
                "type": "float",
                "required": true
              },
              {
                "name": "payment_amount",
                "type": "float",
                "required": true
              },
              {
                "name": "principal_portion",
                "type": "float",
                "required": true
              },
              {
                "name": "interest_portion",
                "type": "float",
                "required": true
              },
              {
                "name": "ending_balance",
                "type": "float",
                "required": true
              },
              {
                "name": "cumulative_interest",
                "type": "float",
                "required": true
              },
              {
                "name": "cumulative_principal",
                "type": "float",
                "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
        }
      ]
    }
  ],
  "enums": {}
}