which best describes an application programming interface (api)