{
  "version": "1.0",
  "modules": [
    {
      "name": "Submissions",
      "prefix": "/api/submissions",
      "endpoints": [
        {
          "method": "POST",
          "path": "/",
          "summary": "Create New Submission",
          "description": "Creates a new submission record with user name and email. Validates that name is not empty and between 1-100 characters, and email matches standard email format and is between 5-255 characters. Returns the created submission with auto-generated UUID and timestamps.",
          "request_body": {
            "schema_name": "SubmissionCreate",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "type": "str",
                "required": true
              }
            ]
          },
          "response": {
            "schema_name": "SubmissionResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "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": "/",
          "summary": "List All Submissions",
          "description": "Returns a paginated list of all submission records ordered by creation date (newest first). Supports optional limit and offset parameters for pagination. All submissions are visible to all users without filtering.",
          "query_params": [
            {
              "name": "limit",
              "type": "int",
              "required": false,
              "default": 20
            },
            {
              "name": "offset",
              "type": "int",
              "required": false,
              "default": 0
            }
          ],
          "response": {
            "schema_name": "SubmissionResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "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": "GET",
          "path": "/{submission_id}",
          "summary": "Get Submission By ID",
          "description": "Returns a single submission record 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": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "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": "PATCH",
          "path": "/{submission_id}",
          "summary": "Update Submission",
          "description": "Updates an existing submission record. Accepts partial updates for name and email fields. Validates updated fields according to the same rules as creation. Returns 404 if submission does not exist.",
          "path_params": [
            {
              "name": "submission_id",
              "type": "str"
            }
          ],
          "request_body": {
            "schema_name": "SubmissionUpdate",
            "fields": [
              {
                "name": "name",
                "type": "str | None",
                "required": false,
                "default": null
              },
              {
                "name": "email",
                "type": "str | None",
                "required": false,
                "default": null
              }
            ]
          },
          "response": {
            "schema_name": "SubmissionResponse",
            "fields": [
              {
                "name": "name",
                "type": "str",
                "required": true
              },
              {
                "name": "email",
                "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": "/{submission_id}",
          "summary": "Delete Submission",
          "description": "Deletes a submission record by its unique identifier. Returns 404 if the submission does not exist. Returns 204 No Content on successful deletion.",
          "path_params": [
            {
              "name": "submission_id",
              "type": "str"
            }
          ],
          "status_code": 204
        }
      ]
    }
  ],
  "enums": {}
}
