Personal API - Mapping
3 min read
A Personal API could implement a number of features. I would like to address a few features that I feel are core to the concept of a Personal API. First, a Personal API is a publisher or pusher of content to it's own publishing environment or to other publishing products. In order to be a publisher or redirector of content to other environments, another feature of a Personal API needs to be the ability to map content type and structure from one product and/or structure to another. With that mapping capability in place, a Personal API could then offer the owner of the content a rich user experience in which to manage and configure the pushing and pulling of content automatically or on demand. By offering the owner of content the ability to manage and configure the redirecting and publishing of their data, authorization, event logging, and syndication of true ownership accross multiple environments is possible and meaningful in a true identity-based rich experience.
For the Personal API to be able to map content between systems, the media type of the content is important for the Personal API to understand what available publishing or configured mapping options match the content type that is being provided to the API. Also, an identifier, preferably in the form of a URI, into the system of origin from which the content is coming, provides the Personal API the option of retrieving the content when needed in processing an automated push or on-demand push. Then, the Personal API doesn't necessarily need to store the content in a repository independent of the origin. If content is coming through that doesn't have an identifier into a system of origin, the Personal API would need to store the content/data into some repository that would be configured as the default Personal API repository.
Another problem space of a Personal API mapping system is the discoverability of options to which a Personal API can publish content. For example, let's say that I am posting a blog entry. When I post the entry, should I have a plugin in that blog product that allows me to push or publish to my Personal API? If I do have that kind of plugin, should the plugin pull down dynamically choices to which I can immediately publish to that are configured in my Personal API. For instance, let's say that I have mapped in my Personal API: when I receive a request to publish content from a blog, I can push it to Twitter, Facebook, and an LMS (Learning Management System). In the LMS, I have a few courses that have assignments that I can specifically push to that I've configured as well. Should the plugin in the blog dynamically discover all of those options and provide a UI to choose to publish to all environments, or the ability to drill down and publish to a specific course assignment? Alternatively, the plugin could publish the content to the Personal API with the media type and an origin identifier and then the user would have the option to manually push the content to the specific course assigment through the Personal API UI, which is managing all the mappings. The Personal API would have a repository that would keep all available content and/or their origin identifiers that could be retrieved and pushed to any selected/configured mapped environment.