{"openapi":"3.1.0","info":{"title":"Edit Distance Visualizer","description":"Step through the Levenshtein dynamic-programming table cell by cell, with configurable insert/delete/substitute costs, and see the optimal backtrace and edit operations that turn one string into another.","version":"1.0"},"servers":[{"url":"https://dabbled.ai"}],"paths":{"/apps/edit-distance-visualizer":{"get":{"operationId":"editDistanceVisualizer","summary":"Step through the Levenshtein dynamic-programming table cell by cell, with configurable insert/delete/substitute costs, and see the optimal backtrace and edit operations that turn one string into another.","parameters":[{"name":"string_a","in":"query","required":false,"description":"Source string A","schema":{"type":"string"}},{"name":"string_b","in":"query","required":false,"description":"Target string B","schema":{"type":"string"}},{"name":"insert_cost","in":"query","required":false,"description":"Cost of an insertion","schema":{"type":"number"}},{"name":"delete_cost","in":"query","required":false,"description":"Cost of a deletion","schema":{"type":"number"}},{"name":"substitute_cost","in":"query","required":false,"description":"Cost of a substitution","schema":{"type":"number"}},{"name":"case_sensitive","in":"query","required":false,"description":"Treat upper/lower case as different characters","schema":{"type":"boolean"}},{"name":"show_all_paths","in":"query","required":false,"description":"Highlight all optimal paths instead of one","schema":{"type":"boolean"}},{"name":"speed_ms","in":"query","required":false,"description":"Animation speed in milliseconds per step","schema":{"type":"number"}}],"responses":{"200":{"description":"Rendered app reflecting the given inputs."}}}}}}