The server side programming API will consist of a resource definition and a data definition.
The resource definition is what every module uses as a definition structure. This structure should have fields for the resource type, 64 bits of resource option flags, resource meta-data (verbose name, copyright, etc), resource identifier, it's disposition in relation to other resources (what it's a child of, etc), and a definition of what methods this resource implements (much like the file_operations structure that Linux device drivers use).
The data definition, or more accurately data token should be a device independent structure which has a data identifier, type, payload pointer, directions for handling (urgent, lazy, undefined, etc), and a resource specific definition (CODECS could store compatibility algorithms or requirements, etc in it).
These 2 definitions are currently just primal figments of my imagination, so they are subject to evolution and great improvement. I expect that all items in the server can be represented by one of these two definitions. They are designed to allow for pure modularity and efficient dispatch.