As the title says, I think expanding Codeforces API would be a good idea.
For example, adding a simple submit API call would ease the development of CLI tools and IDEs. An API call to list problem submissions, and one to download submission code would allow course organizers, like myself, to check for plagiarism. Every functionality which is available via "website", should be somehow accessible through the API. I know it`s a lot of work, but having such thing would be terrific.
Also, having a public API would encourage other judges to also expose theirs, and maybe set an unifying standard for online judges.
I am aware that there are some alternatives, like https://github.com/online-judge-tools/oj, but they don`t have full functionality, and can break when CF decides to change anything.
Let me know what you think, or whether this is already planned.
I second this!
I have been trying to work on a Codeforces app for fun (and as I have some spare time now), and been frustrated with CF's limited API. Even viewing the problems of a contest include reading the HTML content of the page. If anybody is wondering why things would break with updates, most of the tools online rely on these hacky steps.
CF-Tool can do most or all things metioned above. Since it is a commandline tool in can simply be interfaced to build tools on top of it.
Of course a clean API would be nicer, but CF-Tool is available right now.
I currently use CF-Tool, and it has been great for now. Actually, that tool inspired me to write this blog post.
While it can do most, it cant do all of these things. Also, the forwards incompatibility with cf web could break it. Also, some people want to further customize their environments, and tool being written in go language prohibits that (in a certain way, at least for me).
An API to download submission code would also be nice for educational round hacking.
How does Vjudge submits code? I guess it has existed for years without breaking?