{
  "version": "1.0",
  "modules": [
    {
      "name": "Calculator",
      "prefix": "/sessions",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create or Retrieve Session",
          "description": "Creates a new session with the provided session_identifier or returns the existing session if one already exists with that identifier. Sessions are used to group calculations for a browser session.",
          "request_body": {
            "schema_name": "SessionCreate",
            "fields": [
              {
                "name": "session_identifier",
                "type": "str",
                "required": true
              }
            ]
          },
          "response": {
            "schema_name": "SessionResponse",
            "fields": [
              {
                "name": "session_identifier",
                "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": "/{session_identifier}/calculations",
          "summary": "Get Session Calculations",
          "description": "Returns a session and all its calculations ordered by most recent first, limited to 10 calculations. Returns 404 if the session identifier does not exist.",
          "path_params": [
            {
              "name": "session_identifier",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "SessionCalculationsResponse",
            "fields": [
              {
                "name": "id",
                "type": "str",
                "required": true
              },
              {
                "name": "session_identifier",
                "type": "str",
                "required": true
              },
              {
                "name": "created_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "updated_at",
                "type": "datetime",
                "required": true
              },
              {
                "name": "calculations",
                "type": "List[CalculationDetail]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "principal",
                    "type": "Decimal",
                    "required": true
                  },
                  {
                    "name": "rate",
                    "type": "Decimal",
                    "required": true
                  },
                  {
                    "name": "time",
                    "type": "Decimal",
                    "required": true
                  },
                  {
                    "name": "time_unit",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "interest",
                    "type": "Decimal",
                    "required": true
                  },
                  {
                    "name": "total_amount",
                    "type": "Decimal",
                    "required": true
                  },
                  {
                    "name": "timestamp",
                    "type": "datetime",
                    "required": true
                  }
                ]
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "DELETE",
          "path": "/{session_identifier}/calculations",
          "summary": "Clear Session Calculations",
          "description": "Deletes all calculations associated with the specified session. Returns the count of deleted calculations. Returns 404 if the session identifier does not exist.",
          "path_params": [
            {
              "name": "session_identifier",
              "type": "str"
            }
          ],
          "status_code": 200
        }
      ]
    }
  ],
  "enums": {
    "TimeUnit": [
      "YEARS",
      "MONTHS"
    ]
  }
}
