1. A method, comprising the machine-implemented steps of: receiving one or more command line interface commands associated with a network device that does not natively provide a programmable management interface; creating and storing a knowledge base comprising a representation of a syntax and semantics of the one or more command line interface commands; receiving from the knowledge base a data structure representing a particular configuration command among the one or more command line interface commands; creating and storing an intermediate data model that represents the configuration command, wherein creating the intermediate data model includes predicting one or more attributes of the configuration command; based on the intermediate data model, creating and storing a file defining an application programming interface for the network device; wherein the application programming interface is generated at least in part based upon a capability matrix containing information about capabilities of the network device; wherein the method is performed by one or more computing devices.