{
  "version": "1.0",
  "modules": [
    {
      "name": "Submissions",
      "prefix": "/submissions",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create New Submission",
          "description": "Creates a new form submission with name and email. Validates that name is not empty after trimming and email matches valid format. Returns the created submission with generated ID and timestamps.",
          "request_body": {
            "schema_name": "SubmissionCreate",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": false
              },
              {
                "name": "email",
                "type": "str",
                "required": false
              }
            ]
          },
          "response": {
            "schema_name": "SubmissionResponse",
            "fields": [
              {
                "name": "id",
                "type": "StrId",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "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": "/",
          "summary": "List All Submissions",
          "description": "Returns a paginated list of all submissions ordered by creation date descending (newest first). Supports limit and offset parameters for pagination.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            }
          ],
          "response": {
            "schema_name": "SubmissionListResponse",
            "fields": [
              {
                "name": "items",
                "type": "List[SubmissionResponse]",
                "required": true,
                "is_list": true,
                "item_fields": [
                  {
                    "name": "id",
                    "type": "StrId",
                    "required": true
                  },
                  {
                    "name": "name",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "email",
                    "type": "str",
                    "required": true
                  },
                  {
                    "name": "created_at",
                    "type": "datetime",
                    "required": true
                  },
                  {
                    "name": "updated_at",
                    "type": "datetime",
                    "required": true
                  }
                ]
              },
              {
                "name": "total",
                "type": "int",
                "required": true
              },
              {
                "name": "limit",
                "type": "int",
                "required": true
              },
              {
                "name": "offset",
                "type": "int",
                "required": true
              }
            ],
            "is_list": false
          },
          "status_code": 200
        },
        {
          "method": "GET",
          "path": "/{submission_id}",
          "summary": "Get Submission By ID",
          "description": "Retrieves a single submission by its unique identifier. Returns 404 if the submission does not exist.",
          "path_params": [
            {
              "name": "submission_id",
              "type": "str"
            }
          ],
          "response": {
            "schema_name": "SubmissionResponse",
            "fields": [
              {
                "name": "id",
                "type": "StrId",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "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": "PATCH",
          "path": "/{submission_id}",
          "summary": "Update Submission",
          "description": "Updates an existing submission. Only provided fields are updated. Validates name and email format if provided. Returns 404 if submission not found.",
          "path_params": [
            {
              "name": "submission_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "SubmissionUpdate",
            "fields": [
              {
                "name": "name",
                "type": "str | None",
                "required": false
              },
              {
                "name": "email",
                "type": "str | None",
                "required": false
              }
            ]
          },
          "response": {
            "schema_name": "SubmissionResponse",
            "fields": [
              {
                "name": "id",
                "type": "StrId",
                "required": true
              },
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "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": "/{submission_id}",
          "summary": "Delete Submission",
          "description": "Deletes a submission by ID. Returns 404 if the submission does not exist. Returns success message on successful deletion.",
          "path_params": [
            {
              "name": "submission_id",
              "type": "str"
            }
          ],
          "status_code": 200
        }
      ]
    }
  ],
  "enums": {}
}