A computer-implemented method comprising: accessing an object definition for a first type of data object stored in a first storage format in a first data store (114, 209), wherein the object definition comprises at least one or more properties associated with the first type of data object, wherein the first type of data object defines a set of properties associated with an instance of the first type of data object; generating a first application programming interface associated with the first type of data object for accessing an instance of the first type of data object, based at least partly on the object definition; receiving a first function associated with the first type of data object, wherein the first function is configured to execute an operation associated with the instance of the first type of data object by using the generated first application programming interface associated with the first type of data object, wherein the first function includes one or more user-defined operations associated with the first application programming interface; storing the first function associated with the first type of data object in a registry of functions; determining a change to the object definition for the first type of data object, wherein the change to the object definition comprises adding, removing, renaming, or otherwise modifying a property from the at least one or more properties associated with the first type of data object; in response to determining the change, updating the first application programming interface based on the change to the object definition for the first type of data object; receiving a request to execute the first function associated with the first type of data object; and executing the first function associated with the first type of data object based on the updated first application programming interface. accessing an object definition for a first type of data object stored in a first storage format in a first data store (114, 209), wherein the object definition comprises at least one or more properties associated with the first type of data object, wherein the first type of data object defines a set of properties associated with an instance of the first type of data object; generating a first application programming interface associated with the first type of data object for accessing an instance of the first type of data object, based at least partly on the object definition; receiving a first function associated with the first type of data object, wherein the first function is configured to execute an operation associated with the instance of the first type of data object by using the generated first application programming interface associated with the first type of data object, wherein the first function includes one or more user-defined operations associated with the first application programming interface; storing the first function associated with the first type of data object in a registry of functions; determining a change to the object definition for the first type of data object, wherein the change to the object definition comprises adding, removing, renaming, or otherwise modifying a property from the at least one or more properties associated with the first type of data object; in response to determining the change, updating the first application programming interface based on the change to the object definition for the first type of data object; receiving a request to execute the first function associated with the first type of data object; and executing the first function associated with the first type of data object based on the updated first application programming interface.