{"openapi": "3.0.3", "info": {"title": "Genesis Text Utility API", "version": "1.2.0"}, "servers": [{"url": "https://maneth-genesis.duckdns.org"}], "paths": {"/metrics": {"post": {"summary": "Calculate deterministic text metrics", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TextInput"}}}}, "responses": {"200": {"description": "Metrics returned"}, "400": {"description": "Invalid JSON or text"}, "413": {"description": "Input too large"}}}}, "/batch_metrics": {"post": {"summary": "Calculate metrics for up to 100 texts", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BatchInput"}}}}, "responses": {"200": {"description": "Batch metrics returned"}, "400": {"description": "Invalid input"}, "413": {"description": "Input too large"}}}}, "/diff": {"post": {"summary": "Compare two text versions", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiffInput"}}}}, "responses": {"200": {"description": "Diff returned"}, "400": {"description": "Invalid input"}, "413": {"description": "Input too large"}}}}, "/lint": {"post": {"summary": "Detect common text formatting issues without modifying text", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TextInput"}}}}, "responses": {"200": {"description": "Lint report returned"}, "400": {"description": "Invalid input"}, "413": {"description": "Input too large"}}}}, "/clean": {"post": {"summary": "Normalize whitespace without rewriting text", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TextInput"}}}}, "responses": {"200": {"description": "Cleaned text returned"}, "400": {"description": "Invalid JSON or text"}, "413": {"description": "Input too large"}}}}}, "components": {"schemas": {"TextInput": {"type": "object", "required": ["text"], "properties": {"text": {"type": "string", "maxLength": 200000}}}, "BatchInput": {"type": "object", "required": ["texts"], "properties": {"texts": {"type": "array", "maxItems": 100, "items": {"type": "string", "maxLength": 200000}}}}, "DiffInput": {"type": "object", "required": ["before", "after"], "properties": {"before": {"type": "string", "maxLength": 200000}, "after": {"type": "string", "maxLength": 200000}}}}}}