1. A method to represent a network using a programmable graph model, comprising: providing, by each of a plurality of network elements in the network, a plurality of service sets, wherein each of the plurality of service sets provides a plurality of application programming interfaces (APIs); receiving, from a first API of a first service set provided by each of the plurality of network elements, location information for each of the plurality of network elements; receiving, from a first API of a second service set provided by each of the plurality of network elements, a set of attributes of each of the plurality of network elements; generating, based on the received location information and sets of attributes, a directed graph to represent a topology of the network, wherein each of the plurality of network elements are represented in the directed graph by one of the plurality of nodes, wherein each node stores an indication of the set of attributes of the respective network element represented by the node; identifying, through the indication of the sets of attributes stored in the directed graph, a subset of network elements, of the plurality of network elements, upon which to apply a requested operation, wherein at least two of the network elements in the subset of network elements execute different operating systems; and applying the requested operation to the subset of network elements in a distributed manner through the directed graph, wherein the requested operation is applied by a first API provided by a third service set provided by the subset of network elements.