If I can just make a recommendation, you may want to just start by listing the resources you want to expose. Kev started that in post 4 I think. Then list the actions you want to allow on each resource. From there, you can start modeling the service contracts you'll need (most times these will be typical CRUD ops). For example:
Playlist
- Create
- Read
- Update (e.g. title)
- Delete
- Add Song
- Remove Song
For a RESTful architecture you can then figure out what your endpoints will be, based on the resources (e.g. /openvis/playlist, /openvis/media, /openvis/config, etc.). Your operations will then use HTTP methods (GET, POST, PUT, DELETE) and the data will either be in the URL or as the HTTP payload for POST and PUT ops.
From there you can then actually worry about how to implement those services in C#, Java, PHP, Python, etc.