designing api for applications